13

この関数で英語の単語と日本語の単語のプロセスを変えたい

function process_word($word) {
   if($word is english) {
     /////////
   }else if($word is japanese) {
      ////////
   }
}

ありがとうございました

4

6 に答える 6

25

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);
}
于 2010-05-18T12:59:42.763 に答える
22

この関数は、単語に少なくとも 1 つの日本語文字が含まれているかどうかをチェックします ( Wikipediaで日本語文字のユニコード範囲を見つけました)。

function isJapanese($word) {
    return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}
于 2010-05-18T13:39:53.050 に答える
3

検出機能を持つ Google の翻訳 API を試すことができます: http://code.google.com/apis/language/translate/v2/using_rest.html#detect-language

于 2010-05-18T11:57:51.473 に答える
1

mb_detect_encoding関数を試してください。エンコーディングがEUC-JPまたはUTF-8/UTF-16の場合は日本語、それ以外の場合は英語です。UTFエンコーディングは多くの言語で使用できるため、各言語のエンコーディングを確認できるとよいでしょう。

于 2010-05-18T12:33:20.610 に答える
0

通常、英語のテキストは ASCII 文字 (より適切には、ASCII 範囲の文字) のみで構成されます。

于 2010-05-18T11:57:45.953 に答える
0

文字セットを変換して、成功するかどうかを確認できます。

iconv を見てみましょう: http://www.php.net/manual/en/function.iconv.php

文字列を ISO-8859-1 に変換できる場合は英語である可能性があり、iso-2022-jp に変換できる場合は日本語である可能性があります (正確な文字セットについては間違っている可能性があります。Google で検索する必要があります)。

于 2010-05-18T12:03:11.913 に答える