我有一個允許UTF8字符的輸入框 - 我可以通過編程方式檢測字符是中文,日文還是韓文?(可能是某個Unicode範圍的一部分)?我會改變搜索方法,取決於MySQL的全文搜索是否可行(它不適用於CJK字符)。在PHP中檢測CJK字符
謝謝!
我有一個允許UTF8字符的輸入框 - 我可以通過編程方式檢測字符是中文,日文還是韓文?(可能是某個Unicode範圍的一部分)?我會改變搜索方法,取決於MySQL的全文搜索是否可行(它不適用於CJK字符)。在PHP中檢測CJK字符
謝謝!
CJK字符限制在某些Unicode Blocks。你需要檢查這些字符是否位於這些塊內,並且應該考慮代理(32位字符)。
你想檢測一個角色是否是(中文或日文或韓文)角色?或者你想告訴中文字符除了日文字符?前者很容易;由於漢族統一,後者在很多情況下是不可能的。
// 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);
}
前者,謝天謝地。 – ash 2010-04-08 10:07:33