Не удается заставить методы в классе работать - PullRequest
0 голосов
/ 16 сентября 2010
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;     
   }
}

Это код.Не работаетКакие-нибудь мысли?О да.Он всегда входит в выход по умолчанию для любого входа.Может быть, это что-то делать с тем, как PHP обрабатывает строки chars X?Я не знаю.

Ответы [ 3 ]

1 голос
/ 16 сентября 2010

Вместо этого вы должны использовать str_replace :

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

Это работает точно так же, как ваш оператор switch.

1 голос
/ 16 сентября 2010

Вместо переключения самого символа, переключите код символа.Встраивать символы ASCII Extended непосредственно в строку опасно.Иногда даже редактор, который вы используете для написания кода, может некорректно сохранять символы, если вы указали неправильную кодировку.

0 голосов
/ 16 сентября 2010

Да. Я немного изменил код на этот

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

для целей тестирования, и это сработало. Спасибо всем.

...