質問

たいて異なるプロセスのための英語、日本語能

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つの日本の文字が含まれているかどうかをチェックします(日本語の文字にユニコード範囲が見つかりました ウィキペディア).

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に変換できる場合は、日本語になる可能性があります(正確な炭火で間違っている可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top