【问题标题】:Converting an ereg_replace to preg_replace将 ereg_replace 转换为 preg_replace
【发布时间】:2012-04-15 06:16:39
【问题描述】:

我必须将ereg_replace 转换为preg_replace

ereg_replace 代码是:

ereg_replace( '\$([0-9])', '$\1', $value );

由于 preg 由开始和结束反斜杠表示,我假设转换为:

preg_replace( '\\$([0-9])\', '$\1', $value );

由于我对正则表达式不太了解,我不确定上述方法是否正确?

【问题讨论】:

    标签: php deprecated


    【解决方案1】:

    ereg_replace()preg_replace() 之间的区别之一是模式必须用分隔符括起来:delimiter + pattern + delimiter。正如documentation 中所述,分隔符可以是任何非字母数字、非反斜杠、非空白字符。这意味着有效的分隔符是:/#~+%@!<>,前两个是最常用的(但这只是我的猜测)。

    如果您的ereg_replace() 按您的预期工作,那么只需在模式中添加分隔符,它就会执行此操作。以下所有示例都可以使用:

    preg_replace('/\$([0-9])/', '$\1', $value);
    

    preg_replace('#\$([0-9])#', '$\1', $value);
    

    preg_replace('%\$([0-9])%', '$\1', $value);
    

    【讨论】:

    • 非常感谢 - 这就像我从 PHP 5.2.9 升级并注意到使用 PHP 3 或更高版本时已弃用的消息时获得了更多的拼图。
    • 感谢您的清晰和简洁的解释。不是专家,他们对我来说看起来一样,只有这个答案解释了实际的区别。 (我意识到这是将近 10 年后的事了:)
    【解决方案2】:

    试试

    preg_replace( '#\$([0-9])#', '\$$1', $value );
    

    【讨论】:

    • 感谢您的洞察力 - 这一切都有帮助
    猜你喜欢
    • 2013-05-26
    • 2012-03-09
    • 2013-02-10
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多