PHP - 如何将多个字符串映射到单个字符串?例如'en','english','eng' - > “工程”

时间:2011-07-28 04:10:21

标签: php map many-to-one

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

到目前为止我唯一的想法是做一系列这样的测试,但它并不是非常不优雅。

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

什么是更好的解决方案?

3 个答案:

答案 0 :(得分:2)

if(in_array($s,array("eng","en","english"))){
   //..
}

答案 1 :(得分: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;
     }
}

答案 2 :(得分:0)

使用正则表达式,您可以使用区分大小写或不使用区分功能,这可能是一个优势......

return (preg_match('/(en|eng|english)/i',$s)) ? 'eng' : 'default';