1

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

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

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

2 回答 2

7

对于在谷歌上找到这个的人来说,问题是我的g标志。

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

在对问题的评论中感谢对马里奥的回答。

于 2013-09-12T16:27:50.577 回答
5

尝试

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

反而。\D是“非数字”

php > $foo = 'abc123def';
php > echo preg_replace('/\D/', '-', $foo);
---123---
于 2013-08-29T15:37:36.290 回答