我有以下 JSON 编码的字符串:
$json = '"|\t|\n|\\\u0027|\\\u0022|"';
除了 \\\u0022
或 \\\u0027 之外,转义所有(已经)转义的字符/代码点的最有效方法是什么
? 我虽然关于将 preg_replace()
与负先行正则表达式一起使用,但它没有像我预期的那样工作,输出应该是:
$json = '"|\\\t|\\\n|\\\u0027|\\\u0022|"';
我在 JSON-PHP-PCRE 转义的海洋中迷失了方向,有人可以帮助我吗?
最佳答案
像这样的东西可能会在负前瞻的帮助下工作:
<?php
$json = '"|\t|\n|\\\u0027|\\\u0022|"';
$s = preg_replace('~(\\\\)(?!(\\1|u002[27]))~', '$1$1$1', $json);
var_dump($json);
var_dump($s);
?>
输出
string(25) ""|\t|\n|\\u0027|\\u0022|""
string(29) ""|\\\t|\\\n|\\u0027|\\u0022|""
关于php - 正则表达式 - 负前瞻性转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5941815/