【问题标题】:How to unescape string in php?如何在php中取消转义字符串?
【发布时间】:2015-10-13 20:59:40
【问题描述】:

给定这样的字符串

$str = '\007\t\007\006\006\t\n\026\r\\\045';

格式化并输出未转义的字符串,以便 \t - tabulation 等等。

我可以通过使用替换来解决这个问题,但也许有更好的解决方案?

【问题讨论】:

  • 我可能错了,但我认为$str 没有可以解码的有效字符。你期望得到什么作为解码字符串?
  • 您期望的确切输出是什么?
  • 在输出中需要是字符串或原始字节数组。
  • @RyanVincent 不可读,但仍然是字符,

标签: php string escaping


【解决方案1】:

stripcslashes 将取消转义,它可以识别类似 C 的 \n、\t 等,八进制和十六进制表示。

【讨论】:

    【解决方案2】:

    我能想到的最好的是:

    eval('$str_unescaped = "' . str_replace('"', '\"', $str) . '";');
    

    str_replace 是必需的,以防字符串包含任何嵌入的双引号。但如果它包含嵌入的\" 序列,它仍然会出错。

    【讨论】:

    • 它有效!我的字符串还包含'$',添加了str_replace(['"','$'], ['\"','\$'], $str)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2015-05-31
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2011-02-09
    • 2011-04-02
    相关资源
    最近更新 更多