文字列の多対 1 の key->value マッピングが必要です。
これまでの私の唯一のアイデアは、このような一連のテストを行うことですが、それほどエレガントではありません。
switch($s) {
case "en":
case "thatlanguagethebritsspeak":
case "english":
return "eng";
...
}
より良い解決策は何ですか?
文字列の多対 1 の key->value マッピングが必要です。
これまでの私の唯一のアイデアは、このような一連のテストを行うことですが、それほどエレガントではありません。
switch($s) {
case "en":
case "thatlanguagethebritsspeak":
case "english":
return "eng";
...
}
より良い解決策は何ですか?
if(in_array($s,array("eng","en","english"))){
//..
}
$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;
}
}
正規表現を使用すると、大文字と小文字を区別する機能または機能を使用しない機能を使用できます。これは利点になる可能性があります...
return (preg_match('/(en|eng|english)/i',$s)) ? 'eng' : 'default';