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