Как проверить, является ли это слово японским или английским, используя PHP
Я хочу, чтобы в этой функции был другой процесс для английского слова и японского слова
function process_word($word) {
if($word is english) {
/////////
}else if($word is japanese) {
////////
}
}
Благодарю вас
Ответы
Ответ 1
Быстрое решение, которое не нуждается в расширении mb_string
:
if (strlen($str) != strlen(utf8_decode($str))) {
// $str uses multi-byte chars (isn't English)
}
else {
// $str is ASCII (probably English)
}
Или модификация решения предоставленного @Александром Константиновым:
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);
}
Ответ 2
Эта функция проверяет, содержит ли слово хотя бы одну японскую букву (я нашел диапазон Юникода для японских букв в Wikipedia).
function isJapanese($word) {
return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}
Ответ 3
Вы можете попробовать API перевода Google, который имеет функцию обнаружения:
http://code.google.com/apis/language/translate/v2/using_rest.html#detect-language
Ответ 4
Попробуйте mb_detect_encoding, если кодировка EUC-JP или UTF-8/UTF-16 может быть японской, иначе английской.
Лучше, если вы можете обеспечить кодирование каждого языка, так как кодировки UTF могут использоваться для многих языков
Ответ 5
Английский текст обычно состоит только из символов ASCII (или, лучше сказать, символов в диапазоне ASCII).
Ответ 6
Вы можете попытаться преобразовать кодировку и проверить, удастся ли ей выполнить.
Взгляните на значок: http://www.php.net/manual/en/function.iconv.php
Если вы можете преобразовать строку в ISO-8859-1, это может быть английский, если вы можете конвертировать в iso-2022-jp, это возможно japanese (возможно, я ошибаюсь в отношении точных кодировок, вы должны использовать Google).