Cómo comprobar si la palabra es japonés o Inglés usando PHP
Pregunta
Quiero tener diferentes procesos por palabra Inglés y la palabra japonesa en esta función
function process_word($word) {
if($word is english) {
/////////
}else if($word is japanese) {
////////
}
}
gracias
Solución
Una solución rápida que no necesita la extensión mb_string
:
if (strlen($str) != strlen(utf8_decode($str))) {
// $str uses multi-byte chars (isn't English)
}
else {
// $str is ASCII (probably English)
}
o una modificación de la solución proporcionada por @Alexander Konstantinov :
function isKanji($str) {
return preg_match('/[\x{4E00}-\x{9FBF}]/u', $str) > 0;
}
function isHiragana($str) {
return preg_match('/[\x{3040}-\x{309F}]/u', $str) > 0;
}
function isKatakana($str) {
return preg_match('/[\x{30A0}-\x{30FF}]/u', $str) > 0;
}
function isJapanese($str) {
return isKanji($str) || isHiragana($str) || isKatakana($str);
}
Otros consejos
Esta función comprueba si una palabra contiene al menos una letra japonesa (I encontraron rango Unicode para las letras japonesas en Wikipedia ).
function isJapanese($word) {
return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}
Usted podría intentar API de traducción de Google que tiene una función de detección: http://code.google.com/apis/ idioma / traducir / v2 / using_rest.html # detectar el lenguaje-
Trate con mb_detect_encoding función, si la codificación es EUC-JP o UTF-8 / UTF-16 que puede ser japonés, de lo contrario Inglés. Cuanto mejor es si se puede garantizar, que codifica cada una lengua, como codificaciones UTF se pueden utilizar para muchos idiomas
texto Inglés por lo general se compone sólo de caracteres ASCII (o mejor dicho, personajes de rango ASCII).
Se puede tratar de convertir el juego de caracteres y comprobar si tiene éxito.
Tome un vistazo a iconv: http://www.php.net /manual/en/function.iconv.php
Si se puede convertir una cadena a la norma ISO-8859-1 que podría ser Inglés, si se puede convertir a la norma ISO-2022-JP es además probablemente japonés (puedo estar equivocado para los juegos de caracteres exactos, se debe de google para ellos) .