我们都在CAPS加拿大地址的数据库,客户要求我们转换成小写想到的第一个字母和字母后“ - ”
所以我做了这个功能,但我有与法国重音字母的问题。
具有文件和字符集为ISO-88591。当它工作正常,但是当我试图使它UTF-8就不再工作了。
输入的例子:“达明克劳德élanger”输出:达明克劳德élanger
在E UTF-8将成为
function cap_letter($string) {
$lower = str_split("àáâçèéêë");
$caps = str_split("ÀÁÂÇÈÉÊË");
$letters = str_split(strtolower($string));
foreach($letters as $code => $letter) {
if($letter === '-' || $letter === ' ') {
$position = array_search($letters[$code+1],$lower);
if($position !== false) {
// test
echo $letters[$code+1] . ' == ' . $caps[$position] ;
$letters[$code+1] = $caps[$position];
}
else {
$letters[$code+1] = mb_strtoupper($letters[$code+1]);
}
}
}
//return ucwords(implode($letters)) ;
return implode($letters) ;
}
另一种解决方案我已经记做:ucwords(用strtolower($ STR)),因为所有的地址都已经盖所以电子甚至会申请后用strtolower留É。
但后来我不得不在内部具有前e的问题:XXXÉXXÉ