【问题标题】:ereg_replace to preg_replace [duplicate]ereg_replace 到 preg_replace [重复]
【发布时间】:2012-01-28 09:21:49
【问题描述】:

我有这个警告,已弃用:函数 ereg_replace() 已弃用 有人请帮助我。

ereg_replace:

ereg_replace('([^(folder)])/images/flash', '"/folder/images/flash', $echotemp);

到 preg_replace:

【问题讨论】:

  • 嗯,你可以开始here,尤其是here。
  • 这是什么语言?如果您想要更具体的答案,请添加此信息,这将有助于您的问题可见性
  • 您认为([^(folder)]) 在正则表达式中的含义是什么?

标签: php regex preg-replace ereg-replace


【解决方案1】:

不推荐使用的方法是将来会从您正在使用的语言中删除的方法。除非您可以控制语言规范和路线图,否则您没有太多影响力。

您仍然可以使用该方法,但它可能会在以后的更新中消失,并且通常支持该方法只会建议切换到新的推荐处理方式。

我建议使用 ereg_replace 的替换方法。

【讨论】:

    【解决方案2】:

    发件人:ereg_replace

    注意:
    从 PHP 5.3.0 开始,不推荐使用正则表达式扩展,取而代之的是 PCRE 扩展。调用此函数将发出 E_DEPRECATED 通知。有关转换为 PCRE 的帮助,请参阅 the list of differences。

    .

    提示

    preg_replace() 使用与 Perl 兼容的正则表达式语法,通常是 ereg_replace() 更快的替代方法。

    阅读:PCRE regex syntax


    对于你的模式:

    在使用 PCRE 函数时,模式需要用delimiters 括起来。分隔符可以是任何非字母数字、非反斜杠、非空白字符。

    常用的分隔符是正斜杠 (/)、井号 (#) 和波浪号 (~)。

    如果分隔符需要在模式内匹配,则必须使用反斜杠对其进行转义。如果定界符经常出现在模式中,最好选择另一个定界符以增加可读性。 因此,您的模式应如下所示:

    ([^(folder)])/images/flash
    您在 [^(folder)] 中使用的 [] 用于指定字符集而不是整个单词。最好使用简单的模式而不是复杂的搜索模式。

    %^/folder/images/flash%
    这个比较简单。 I am using % as delimiter for readability. 不使用 # 因为 stackoverflow 会将其视为标题:P。

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 2013-05-30
      • 2015-06-22
      • 2011-01-27
      • 2011-09-10
      • 2011-04-08
      • 2013-07-17
      • 2011-09-13
      相关资源
      最近更新 更多