0

文字列の多対 1 の key->value マッピングが必要です。

これまでの私の唯一のアイデアは、このような一連のテストを行うことですが、それほどエレガントではありません。

switch($s) {
    case "en":
    case "thatlanguagethebritsspeak":
    case "english":
        return "eng";
    ...
}

より良い解決策は何ですか?

4

3 に答える 3

2
if(in_array($s,array("eng","en","english"))){
   //..
}
于 2011-07-28T04:13:19.763 に答える
1
$languages = array( 'en' =>array('english','eng','thatlanguagethebritsspeak'),'de'=>array('deutsch','german'));
// convert it to lowercase
$s= strtolower($s);
foreach ($languages as $code => $language){
     if(in_array($s,$language){
          $s = $code; 
          break;
     }
}
于 2011-07-28T04:22:04.073 に答える
0

正規表現を使用すると、大文字と小文字を区別する機能または機能を使用しない機能を使用できます。これは利点になる可能性があります...

return (preg_match('/(en|eng|english)/i',$s)) ? 'eng' : 'default';
于 2011-07-28T04:31:23.433 に答える