检测 PHP 中的 CJK 字符

atp*_*atp 5 utf-8 cjk language-detection

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

谢谢!

Man*_*s D 7

// 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);
}
Run Code Online (Sandbox Code Playgroud)


dev*_*vio 4

CJK 字符仅限于某些Unicode 块。您需要检查字符是否在这些块内,并且还应该考虑代理(32 位字符)。