2014-12-03 50 views
0

我有一个包含重音字母的单词(城市名称)。我有一个函数,检查城市名称是否在数组中,如果是,将返回一个值(如果不是将返回另一个值)。 即使城市在那里,这个词也不会匹配任何城市(带口音)。我打印出他们俩,他们正确显示(没有怪异的字符,而不是重音)。 它可能是什么? 感谢匹配具有重音符号的字符串

function SearchPV($city){ 
require('PV_CAP_Array.php'); 

$city = str_replace(" ", "", $city); 
$city = str_replace("\'","", $city); 

    foreach($CAP_PV_ARRAY as $key=>$value){ 
     if(strtolower($city) == strtolower($key)) 
      return 'VR'; 
     else 
      return "PV != VR"; 
    } 
} 

阵列:

$CAP_PV_ARRAY=array('affi'=>'37010', 
        'dolcè'=>'37020' 
}; 

编辑

我删除了else语句,它工作(即使我不知道为什么)。好像回报率将不会打破循环(这是要在评估其他选项和返回“!PV = VR”

工作代码

foreach($CAP_PV_ARRAY as $key => $value){ 
     if(strtolower($city) == strtolower($key)) 
      return "VR"; 
    } 
+1

使用['前缀字符串函数mb_'(http://php.net /manual/en/book.mbstring.php)与unicode一起使用。 – mudasobwa 2014-12-03 15:24:30

+0

或只允许普通字母的正则表达式,例如'/ [a-zA-Z \ \ - ] /' – UnskilledFreak 2014-12-03 15:46:31

回答

0

关于return声明,在你原来的代码:

function SearchPV($city) { 
    require('PV_CAP_Array.php'); 

    $city = str_replace(" ", "", $city); 
    $city = str_replace("\'","", $city); 

    foreach($CAP_PV_ARRAY as $key=>$value){ 
     if(strtolower($city) == strtolower($key)) 
      return 'VR'; 
     else 
      return "PV != VR"; 
    } 
} 

这将只检查的第一个项目在数组中,因为它会要么返回VRPV != VR由于if/else。您可以在愿意做更多的东西一样以下,其中它将返回VR如果任何条目匹配,或PV != VR否则:

function SearchPV($city) { 
    require('PV_CAP_Array.php'); 

    $city = str_replace(" ", "", $city); 
    $city = str_replace("\'","", $city); 

    foreach($CAP_PV_ARRAY as $key=>$value){ 
     if(strtolower($city) == strtolower($key)) 
      return 'VR'; 
    } 
    return "PV != VR"; 
} 
+0

是的。正确..感谢:) – blax 2014-12-03 16:08:55