【问题标题】:replace ereg_replace with preg_replace [duplicate]用 preg_replace 替换 ereg_replace [重复]
【发布时间】:2011-04-08 15:40:35
【问题描述】:

你好需要将函数ereg_replace("[\]", "", $theData)改为preg_replace

【问题讨论】:

    标签: php regex string preg-replace ereg-replace


    【解决方案1】:

    我使用这个 sed 自动将 ereg_replace 替换为 preg_replace 并放入所需的斜杠。假设第一个正则表达式中没有 \"

     sed -i 's#ereg_replace("\([^"]*\)"#preg_replace("/\1/"#g' *.php
    

    【讨论】:

      【解决方案2】:

      要将ereg_replace 移植到preg_replace,您需要将正则表达式放在一对分隔符之间

      另外,您的 regx 是 [\]invalid 用于 preg_replace,因为 \ 正在转义结束字符类 ]

      正确的端口是

      preg_replace('/[\\\]/','',$theData) 
      

      此外,由于 char 类只有一个 char,因此不需要 char 类,您可以说:

      preg_replace('/\\\/','',$theData) 
      

      由于您只替换单个字符,因此不建议使用正则表达式。您应该使用str_replace 作为简单的文本替换:

      str_replace('\\','',$data);
      

      【讨论】:

      • '/\\\/' 会导致 preg_replace 转义正斜杠,你需要 4 个反斜杠
      • @Yanick,不,不会。 preg_replace 将其视为 /\\/,它将其解码为分隔符内的文字反斜杠。请注意,'/\\\\/' 是正确的,因为 \\ 和 \ 都可以在字符串文字中编码反斜杠。请注意,\/ 不是字符串转义。
      • 解释原因的更好方法是因为 preg_replace 知道最后一个 / 是分隔符而不是模式正文中的字符,因此它将第三个反斜杠视为文字字符。然后我们知道 "/\\\n/" 不等于 "/\\\\n" 因为第三个反斜杠会转义 n。
      【解决方案3】:
      preg_replace("/\\\/", "", $theData);
      

      【讨论】:

        【解决方案4】:
        str_replace("\\","",$theData);
        

        但我严重怀疑您是否需要更换。很可能您需要一些其他操作。
        这个替换是为了什么?

        【讨论】:

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