帮助preg_replace和特殊字符

时间:2010-08-09 01:01:39

标签: php preg-replace special-characters sanitization

我正在使用PDO课程,但我正在试图删除除...之外的所有字符:

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

正如您所看到的,它是一个简单的函数,但它删除了所有字符éàêïòé

示例:更清洁('$#$<<> - // La sourisaétémangéeparle chat') //返回

La souris a t mang e par le chat (老鼠已被猫吃掉:))

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

您需要在模式中添加/ u模式修饰符以在PCRE中启用UTF-8支持。这假设一切都已经是UTF-8了。

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

答案 1 :(得分:1)

$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字母。