【问题标题】:preg_replace() returns empty stringpreg_replace() 返回空字符串
【发布时间】:2013-09-02 03:14:58
【问题描述】:

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

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

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

【问题讨论】:

标签: php regex preg-replace


【解决方案1】:

试试

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

相反。 \D 是“非数字”

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

【讨论】:

  • 谢谢,不知道 \D,这是一种更整洁的方式来做我正在做的事情。不过,这是导致问题的 g 修饰符。无论如何都要使用它,干杯!
【解决方案2】:

对于在 Google 上找到此内容的人来说,问题在于我的 g 标志。

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

在问题的 cmets 中将此答案归功于 Mario

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 2020-01-27
    • 2020-07-11
    • 2015-05-25
    • 2011-05-09
    • 1970-01-01
    • 2012-07-20
    • 2011-12-15
    相关资源
    最近更新 更多