正则表达式 - 使用负前瞻转义
我有以下 JSON 编码字符串:
$json = '"|\t|\n|\\\u0027|\\\u0022|"';
除了 \\\u0022
或 < 之外,转义所有(已经)转义的字符/代码点的最有效方法是什么? code>\\\u0027? 我想过将 preg_replace()
与负前瞻正则表达式一起使用,但它没有按我的预期工作,输出应该是:
$json = '"|\\\t|\\\n|\\\u0027|\\\u0022|"';
I'我在 JSON-PHP-PCRE 逃逸的海洋中感到迷失,有人可以帮助我吗?
I have the following JSON-encoded string:
$json = '"|\t|\n|\\\u0027|\\\u0022|"';
What is the most efficient way to escape all the (already) escaped chars / codepoints except \\\u0022
or \\\u0027
? I though about using preg_replace()
with a negative lookahead regular expression but it's not working as I expected, the output should be:
$json = '"|\\\t|\\\n|\\\u0027|\\\u0022|"';
I'm feeling lost in this ocean of JSON-PHP-PCRE escaping, can someone help me out?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
像这样的事情可能会在负前瞻的帮助下起作用:
输出
Something like this may work with the help of negative lookahead:
OUTPUT
我对你想要做的事情有点困惑,但我可以用这个将你的输入转换为你的输出:
注意:我不在我的电脑旁,所以我无法验证这是否完美,但它看起来不错这里。
I'm a bit confused by exactly what you are trying to do but I can transform your input to your output with this:
Note: I'm not at my computer so I can't verify that this is perfect but it looks good from here.
尝试
仅在
\
是单个(即前面或后面都没有另一个\
)时查找\
,并将其替换为\\\
。Try
This finds a
\
only if it is single (i. e. neither preceded nor followed by another\
) and replaces it with\\\
.