【问题标题】:PHP preg_replace \PHP preg_replace \
【发布时间】:2011-01-14 10:11:27
【问题描述】:

非常简单的问题:我如何preg_replace 反斜杠字符?

【问题讨论】:

    标签: php preg-replace


    【解决方案1】:

    是的,但你需要逃避它。在正则表达式中使用 \\ 在替换中使用它时,使用 \\\\(这将变成 \\,将被解释为单个反斜杠)。

    【讨论】:

    • $htmlRes = preg_replace("~\\~", "", $htmlRes);警告:preg_replace():没有找到结束分隔符 '~'
    • 应该是$htmlRes = preg_replace("~\\\\~", "", $htmlRes);。当 PHP 解析字符串时,会处理转义序列,并将其解释为 "~\\~",然后由正则表达式引擎解析为单个反斜杠。
    【解决方案2】:

    你需要转义反斜杠:\\

    来自manual on preg_replace

    要在替换中使用反斜杠,它必须加倍("\\\\" PHP 字符串)。

    或者,使用preg_quotepreg_* 操作准备一个字符串。

    【讨论】:

    • @ajk 你用的是单引号还是双引号?
    • $the_name = preg_replace('\\\\', 'u', $the_name);
    • @aj 在这种情况下,我 认为 只使用两个反斜杠应该可以工作。单引号和双引号字符串有不同的转义规则
    • 只是想用空替换反斜杠 ("Susan\'s" -> "Susan's")
    • 是的,我也试过了,但没用。在这两种情况下,它最终都会返回一个空字符串。
    【解决方案3】:

    你可以试试

    $a = "\\\\";
    $a = preg_replace('/\\\\/','/',$a);
    

    输出:

    '//'
    

    【讨论】:

      【解决方案4】:

      \转义\\\

      preg_replace('/\\/', 'REMOVED BACKSLASH', 'sometest\othertest');
      

      【讨论】:

        【解决方案5】:

        此代码适用于我

          $text = "replace \ backslash";
          $rep = "";
          $replace_text = preg_replace( '/\\\\{1}/',$rep,$text);
          echo $replace_text;
        

        输出:

        替换反斜杠

        【讨论】:

          【解决方案6】:

          使用两次,例如\\

          【讨论】:

            【解决方案7】:

            如果您想从文本中删除反斜杠并且不想再看到它。然后使用这个 php 函数。但如果它是一个双反斜杠,它只会删除一个。 stripslashes ($string)

            【讨论】:

              猜你喜欢
              • 2013-08-03
              • 1970-01-01
              • 1970-01-01
              • 2013-07-17
              • 2015-09-22
              • 2010-12-10
              • 2012-02-11
              • 2011-08-24
              相关资源
              最近更新 更多