将字符串与重音符号匹配


Match strings with accents

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

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";
    }

关于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";
    }
}

它只会检查数组中的第一项,因为它会返回VR或由于if/elsePV != VR您可能打算执行类似以下内容的操作,如果任何条目匹配,它将返回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";
}