كيفية التحقق مما إذا كانت الكلمة اليابانية أو الإنجليزية باستخدام PHP

StackOverflow https://stackoverflow.com/questions/2856942

  •  27-09-2019
  •  | 
  •  

سؤال

أريد أن يكون لدي عملية مختلفة للكلمة الإنجليزية وكلمة يابانية في هذه الوظيفة

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

نصائح أخرى

تتحقق هذه الوظيفة مما إذا كانت الكلمة تحتوي على خطاب ياباني واحد على الأقل (لقد وجدت نطاق Unicode للرسائل اليابانية في ويكيبيديا).

function isJapanese($word) {
    return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}

يمكنك تجربة واجهة برمجة تطبيقات ترجمة Google التي لها وظيفة اكتشاف: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).

يمكنك محاولة تحويل Charset والتحقق مما إذا كان ينجح.

ألق نظرة على ICONV: http://www.php.net/manual/en/function.iconv.php

إذا تمكنت من تحويل سلسلة إلى ISO-8859-1 ، فقد تكون اللغة الإنجليزية ، إذا كان بإمكانك التحويل إلى ISO-2022-JP ، فهي يابانية بشكل واضح (قد أكون مخطئًا في charsets الدقيقة ، فيجب عليك Google بالنسبة لهم).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top