我想爲英語單詞和日語單詞的不同過程,這個功能如何檢查單詞是日語或英語的使用PHP
function process_word($word) {
if($word is english) {
/////////
}else if($word is japanese) {
////////
}
}
謝謝
我想爲英語單詞和日語單詞的不同過程,這個功能如何檢查單詞是日語或英語的使用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)
}
或將修改solution provided by @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);
}
這留下了使用變音符的英文單詞。這些不常使用,但它是一個權衡,應該知道什麼時候做出選擇:) – 2010-05-18 14:57:19
@ Thomas.Winsnes:你的意思是像'Hai','Wa','Ka','Arigatou'等東西,對? – 2010-05-18 14:59:55
不,我的意思是英文單詞:naïve,café,résumé,soufflé等。 – 2010-05-18 15:19:52
英文文本通常只由ASCII的字符(或更好地說,ASCII範圍內的字符)。
什麼是範圍?有沒有任何鏈接?謝謝 – bbnn 2010-05-20 16:10:46
儘管將大多數單詞識別爲英語或日語是相當容易的,但有一些字符屬於兩個字符集。 例如,僅包含數字的字符串應對英語和日語都返回true。 – 2010-06-07 16:57:43
你可以嘗試谷歌的翻譯API,它具有探測功能: http://code.google.com/apis/language/translate/v2/using_rest.html#detect-language
你可以嘗試轉換的字符集,並檢查它是否成功。
看一看的iconv:http://www.php.net/manual/en/function.iconv.php
如果你可以將字符串轉換爲ISO-8859-1這可能是英文,如果你能轉換爲ISO-2022-JP是propably日本(我可能是對於確切的字符集錯誤,你應該爲他們谷歌)。
試用mb_detect_encoding函數,如果編碼是EUC-JP或UTF-8/UTF-16,可以是日語,否則是英文。 更好的是,如果你能保證其編碼每一種語言,如UTF編碼可用於許多語言
此功能檢查一個詞是否包含至少一個日文字母(我在Wikipedia發現Unicode範圍由日本字母)。
function isJapanese($word) {
return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}
+1,走吧,好的! – 2010-05-18 14:45:59
好主意! --- – 2010-06-07 16:58:08
根據上面的註釋,4E00-9FBF中的字符不限於日文使用,所以這不是一個可靠的測試。 http://unicode.org/faq/han_cjk.html#4 – 2012-07-30 02:40:21
也許它不一定是語言...只是爲了區分雙字節字符 – bbnn 2010-05-18 12:15:54