preg_replace()返回空字符串

时间:2013-08-29 15:31:52

标签: php regex preg-replace

preg_replace()为以下代码行返回一个空字符串。目的是用连字符替换任何不是数字的东西。通过在线测试器,我相信正则表达式捕获了正确的东西,但由于某种原因,这一行总是返回一个空字符串。

preg_last_error()不会返回错误。有什么建议吗?

$subRef = preg_replace("/[^(\d)]/g", "-", $subRef);

2 个答案:

答案 0 :(得分:5)

尝试

preg_replace('/\D/', '-', $subRef);

代替。 \D是“非数字”

php > $foo = 'abc123def';
php > echo preg_replace('/\D/', '-', $foo);
---123---

答案 1 :(得分:5)

对于在Google上发现此问题的人来说,问题是我的g标志。

据我所知,PHP没有global标志,因为您使用的函数决定了正则表达式是否为全局。

在这个问题的评论中对Mario的答案表示赞同。