在PHP中检测CJK字符

时间:2010-04-08 09:53:42

标签: utf-8 cjk language-detection

我有一个允许UTF8字符的输入框 - 我可以通过编程方式检测字符是中文,日文还是韩文(也许是某些Unicode范围的一部分)?我会根据MySQL的全文搜索是否有效来改变搜索方法(它不适用于CJK字符)。

谢谢!

3 个答案:

答案 0 :(得分:3)

CJK字符仅限于某些Unicode Blocks。如果字符在这些块中,则需要检查字符,并且还应考虑代理(32位字符)。

答案 1 :(得分:3)

// is chinese, japanese or korean language
function isCjk($string) {
    return isChinese($string) || isJapanese($string) || isKorean($string);
}

function isChinese($string) {
    return preg_match("/\p{Han}+/u", $string);
}

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

function isKorean($string) {
    return preg_match('/[\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]/u', $string);
}

答案 2 :(得分:1)

您想要检测角色是(中国人还是日本人还是韩国人)?或者你想告诉汉字除了日文字符?前者很容易;由于汉族统一,后者在很多情况下是不可能的。