【问题标题】:Backslash + number interpreted by PHP as an octal value, how to block this?PHP将反斜杠+数字解释为八进制值,如何阻止它?
【发布时间】:2011-08-19 07:14:22
【问题描述】:

我必须重新格式化一个可以包含以下内容的字符串:

$string = "---8\7----";

问题是 '\7' 被 PHP 解释为八进制值,而不仅仅是 '\' 然后是 '7'。

请问如何阻止 php 执行此操作?当然,我需要保留'\' 谢谢。

【问题讨论】:

  • 您是如何获得输入的?从一个文件?来自 HTML 表单?

标签: php octal


【解决方案1】:

正如其他人所说,用另一个反斜杠转义反斜杠,但我觉得我应该提到为什么会发生这种情况。你的字符串是用双引号写的,在 PHP 中输​​入 template mode where certain rules gets invoked,其中一个确实是你偶然发现的。使用单引号也可以解决这个问题,因为它不做任何模板;

$string = '---8\7----';

这是两种模式的优缺点,真的,但只要你意识到这一点,它不应该在未来对你造成太大影响。 :)

【讨论】:

  • 用单引号替换双引号就可以了!非常感谢!
【解决方案2】:

您需要使用反斜杠来转义该字符。

$string = "---8\\7----";

【讨论】:

    【解决方案3】:

    转义反斜杠。

    $string = "---8\\7----";
    

    【讨论】:

      【解决方案4】:

      使用两个斜杠:

      $string = "---8\\7----";
      

      【讨论】:

        【解决方案5】:

        使用转义字符:

        $string = "---8\\7----";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-30
          • 2010-09-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多