帮助PHP中的扩展ASCII /编码!

时间:2010-09-16 06:52:22

标签: php eclipse character-encoding ascii extended-ascii

晚上好人。

这是我的代码:

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

提前致谢

2 个答案:

答案 0 :(得分:2)

如果您有多字节字符,并且使用strlen()循环遍历每个字符以检查是否已经循环,那么可能是吗? strlen()假设1个字节== 1个字符。

我会查看existing transliteration libraries以获取PHP。

答案 1 :(得分:1)

也许这个功能可以帮助你与mb_strlen结合使用:

mb_strcut 要么 mb_substr

编辑:例如你可以这样:

$string = 'cioèòà';
for ($i=0;$i<mb_strlen($string);$i++) {
  echo mb_substr($string, $i, 1);
}

这会让你回答所有单个字符。