0

我想要字符串的多对一键->值映射。

到目前为止,我唯一的想法是进行一系列这样的测试,但这并不是很不雅。

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 回答