我希望在此功能中使用英语单词和日语单词的不同过程
function process_word($word) {
if($word is english) {
/////////
}else if($word is japanese) {
////////
}
}
谢谢
答案 0 :(得分:23)
不需要mb_string
扩展程序的快速解决方案:
if (strlen($str) != strlen(utf8_decode($str))) {
// $str uses multi-byte chars (isn't English)
}
else {
// $str is ASCII (probably English)
}
或修改solution provided by @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);
}
答案 1 :(得分:22)
此函数检查一个单词是否包含至少一个日文字母(我在Wikipedia中找到了日文字母的unicode范围)。
function isJapanese($word) {
return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}
答案 2 :(得分:3)
您可以尝试使用具有检测功能的Google翻译API: http://code.google.com/apis/language/translate/v2/using_rest.html#detect-language
答案 3 :(得分:1)
尝试使用mb_detect_encoding功能,如果编码为EUC-JP或UTF-8 / UTF-16,则可以是日语,否则为英语。 更好的是,如果您可以确保每种语言编码,因为UTF编码可以用于多种语言
答案 4 :(得分:0)
英文文本通常只包含ASCII字符(或者更好的是ASCII范围内的字符)。
答案 5 :(得分:0)
您可以尝试转换字符集并检查它是否成功。
看一下iconv:http://www.php.net/manual/en/function.iconv.php
如果你可以将字符串转换为ISO-8859-1它可能是英文,如果你可以转换为iso-2022-jp它可能是日语(我可能错误的确切的字符集,你应该google为他们)