繁体   English   中英

如何使用PHP检查单词是日语还是英语

[英]How to check if the word is Japanese or English using PHP

我希望此功能对英语单词和日语单词有不同的处理

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)
}

@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);
}

此功能检查一个单词是否至少包含一个日语字母(我在Wikipedia中找到了日语字母的unicode范围)。

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

您可以尝试具有检测功能的Google翻译API: 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范围内的字符)。

您可以尝试转换字符集并检查它是否成功。

看一下iconv: http//www.php.net/manual/en/function.iconv.php

如果可以将字符串转换为ISO-8859-1,则可能是英语,如果可以转换为iso-2022-jp,则可能是日语(确切的字符集我可能错了,应该用谷歌搜索它们)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM