2010-04-08 69 views
2

我有一個允許UTF8字符的輸入框 - 我可以通過編程方式檢測字符是中文,日文還是韓文?(可能是某個Unicode範圍的一部分)?我會改變搜索方法,取決於MySQL的全文搜索是否可行(它不適用於CJK字符)。在PHP中檢測CJK字符

謝謝!

回答

2

CJK字符限制在某些Unicode Blocks。你需要檢查這些字符是否位於這些塊內,並且應該考慮代理(32位字符)。

1

你想檢測一個角色是否是(中文或日文或韓文)角色?或者你想告訴中文字符除了日文字符?前者很容易;由於漢族統一,後者在很多情況下是不可能的。

+0

前者,謝天謝地。 – ash 2010-04-08 10:07:33

0
// 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); 
}