无法让类中的方法起作用

时间:2010-09-16 00:38:09

标签: php char switch-statement

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){

   switch ($in) {
   case 'Á':
          return 'A';
   case 'á':
          return 'a';
   default:
         return $in;     
   }
}

这是代码。不行。有什么想法吗? 哦耶。它总是进入dafault出口进行任何输入。也许这与php处理字符X字符串的方式有关吗?我不知道。

3 个答案:

答案 0 :(得分:1)

切换字符代码,而不是切换字符本身。将ASCII扩展字符直接嵌入字符串raw是危险的。有时,如果指定的编码错误,即使是用于编写代码的编辑器也可能会错误地保存字符。

答案 1 :(得分:1)

您应该使用str_replace代替:

$input = str_replace(array('Á', 'á'), array('A', 'a'), $input);

这与switch语句完全相同。

答案 2 :(得分:0)

呀。我稍微改变了代码

        switch ($in) {
        case 'B':
            return 'A';
        case 'b':
            return 'a';
        default:
            return $in;     
    }

用于测试目的并且有效。谢谢大家。