正则表达式删除所有字符

时间:2014-02-06 21:33:21

标签: php regex

我正在尝试将我前一段时间写的Javascript转换为PHP。 这个脚本用e替换é与e,ú等特殊字符,依此类推。

第一部分有效。但是,最后我有一行检查现在是否删除了所有字符。最后一部分不起作用。

这是:

if ($str != preg_replace("/[^a-zA-Z \-]+/g","",$str)) {
     echo "error: ".$str." - ".preg_replace("/[^a-zA-Z \-]+/g","",$str);
}

正如我所说,如果我让脚本以$str = "Péter";运行,那么$ str将在它到达这一点之前成为“Peter”。 但无论如何,我得到了这个输出:

error: Peter - 

我想知道这是怎么回事,因为我在我的Javascript中使用了相同的正则表达式并且在那里工作。

1 个答案:

答案 0 :(得分:2)

PHP根本无法识别/g修饰符,这会导致preg_replace返回null并触发警告(您可以在结果上使用var_dump验证这一点)因为模式无效。

删除/g,代码按预期工作。 preg_replace已经替换了所有出现的模式,因此它仍然可以与JavaScript版本相同。