この関数で英語の単語と日本語の単語のプロセスを変えたい
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)
}
または、@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);
}
この関数は、単語に少なくとも 1 つの日本語文字が含まれているかどうかをチェックします ( Wikipediaで日本語文字のユニコード範囲を見つけました)。
function isJapanese($word) {
return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}
検出機能を持つ Google の翻訳 API を試すことができます: http://code.google.com/apis/language/translate/v2/using_rest.html#detect-language
mb_detect_encoding関数を試してください。エンコーディングがEUC-JPまたはUTF-8/UTF-16の場合は日本語、それ以外の場合は英語です。UTFエンコーディングは多くの言語で使用できるため、各言語のエンコーディングを確認できるとよいでしょう。
通常、英語のテキストは ASCII 文字 (より適切には、ASCII 範囲の文字) のみで構成されます。
文字セットを変換して、成功するかどうかを確認できます。
iconv を見てみましょう: http://www.php.net/manual/en/function.iconv.php
文字列を ISO-8859-1 に変換できる場合は英語である可能性があり、iso-2022-jp に変換できる場合は日本語である可能性があります (正確な文字セットについては間違っている可能性があります。Google で検索する必要があります)。