我正在尝试将我前一段时间写的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中使用了相同的正则表达式并且在那里工作。
答案 0 :(得分:2)
PHP根本无法识别/g
修饰符,这会导致preg_replace
返回null
并触发警告(您可以在结果上使用var_dump
验证这一点)因为模式无效。
删除/g
,代码按预期工作。 preg_replace
已经替换了所有出现的模式,因此它仍然可以与JavaScript版本相同。