Помощь с preg_replace и специальными символами - PullRequest
2 голосов
/ 09 августа 2010

Я использую класс PDO, но пытаюсь удалить все символы, кроме ...:

function cleaner($str){
    return preg_replace('/[^a-zA-Z0-9éàêïòé\,\.\']/',' ',trim($str));
}

Как видите, это простая функция, но она удаляет все символы éàêïòé

пример: cleaner ('$ # $ <<> - // La souris a mangee par le chat') // возвращает

Lasouris at man le par chat (мышь съела кошка :))

Любая помощь будет признательна

Ответы [ 2 ]

2 голосов
/ 09 августа 2010

Вам нужно добавить / u модификатор шаблона в ваш шаблон, чтобы включить поддержку UTF-8 в PCRE. Предполагается, что все уже в UTF-8.

http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

1 голос
/ 09 августа 2010
$str = '$#$<<>-//La souris a été mangée par le chat ';
$str = preg_replace('/[^a-zA-Z0-9éàêïòé\,\.\']/u',' ',trim($str));

$str = '$#$<<>-//La souris a été mangée par le chat ';
$str = preg_replace('/[^\p{L}\,\.\']/u',' ',trim($str));

Оба фрагмента работали для меня, на PHP 5.3. Второе регулярное выражение менее ограничено и принимает все буквы Unicode.

...