2010-04-08 18 views
2

J'ai une boîte de saisie qui autorise les caractères UTF8 - puis-je détecter si les caractères sont en chinois, en japonais ou en coréen par programmation (une partie de la gamme Unicode, peut-être)? Je changerais les méthodes de recherche en fonction de si la recherche fulltext de MySQL fonctionnerait (cela ne fonctionnera pas pour les caractères CJK).Détecter les caractères CJK en PHP

Merci!

Répondre

2

Les caractères CJK sont limités à certains Unicode Blocks. Vous devez vérifier les caractères s'ils sont à l'intérieur de ces blocs, et considérer les substituts (caractères 32 bits).

1

Voulez-vous détecter si un caractère est un caractère (chinois ou japonais ou coréen)? Ou voulez-vous distinguer les caractères chinois des caractères japonais? Le premier est facile. ce dernier est dans de nombreux cas impossible, en raison de Han Unification.

+0

Le premier, heureusement. – ash

0
// is chinese, japanese or korean language 
function isCjk($string) { 
    return isChinese($string) || isJapanese($string) || isKorean($string); 
} 

function isChinese($string) { 
    return preg_match("/\p{Han}+/u", $string); 
} 

function isJapanese($string) { 
    return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $string); 
} 

function isKorean($string) { 
    return preg_match('/[\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]/u', $string); 
}