PHP - Как отобразить несколько строк в одну? например 'en', 'english', 'eng' -> 'eng' - PullRequest
0 голосов
/ 28 июля 2011

Мне нужно сопоставление строк ключ-> значение-многие-к-одному.

Пока моя единственная идея - выполнить серию подобных тестов, но она не очень неэлегатна.

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

Что было бы лучшим решением?

Ответы [ 3 ]

2 голосов
/ 28 июля 2011
if(in_array($s,array("eng","en","english"))){
   //..
}
1 голос
/ 28 июля 2011
$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;
     }
}
0 голосов
/ 28 июля 2011

С помощью regex вы можете использовать регистрозависимую или неактивную функцию, что может быть преимуществом ...

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