晚上好人。
这是我的代码:
static private function removeAccentedLetters($input){
for ($i = 0; $i < strlen($input); $i++) {
$input[$i]=self::simplify($input[$i]);
}
return $input;
}
static private function simplify($in){
$ord=ord($in);
switch ($ord) {
case 193: //Á...
return 'A';
case 98: //b
return 'a';
default:
return $in;
}
}
确定。这是不起作用的一点
case 193: //Á...
return 'A';
这就是:
case 98: //b
return 'a';
这些仅用于测试目的。
有人能告诉我发生了什么吗?之前我遇到了同样的错误,但现在我没有在代码本身使用任何扩展的ASCII,这是之前错误的原因。
我认为它必须与字符编码有关,但我不确定。顺便说一句,我在Eclipse中编码,根据它,我正在使用的字符编码是Cp1252。
哦,是的,代码应该消除任何重音字母,例如áà并用它们的基本代表替换它们,即á-&gt; a
提前致谢
答案 0 :(得分:2)
如果您有多字节字符,并且使用strlen()
循环遍历每个字符以检查是否已经循环,那么可能是吗? strlen()
假设1个字节== 1个字符。
我会查看existing transliteration libraries以获取PHP。
答案 1 :(得分:1)