简体   繁体   English

PHP转义未转义的引号

[英]PHP escape unescaped quote marks

I know I can use the following to replace " with \\":我知道我可以使用以下内容将 " 替换为 \\":

str_replace('"', '\"', $string);

But if some quotemarks are already escaped the above code breaks things as it replaces \\" with \\ \\".但是如果一些引号已经被转义,上面的代码会破坏事情,因为它将 \\" 替换为 \\\\"。

So is there any way I can search and replace " only and ignore \\"?那么有什么方法可以搜索和替换“仅而忽略\\”?

Try something like this:尝试这样的事情:

preg_replace('/(?<!\\)"/', '\"', $data);

Honestly though, escaping in this way is ugly.老实说,以这种方式逃避是丑陋的。 And if you need this, you are already doing something wrong.如果你需要这个,你已经做错了。

You should highly consider refactoring your code to use proper escaping functions for what you are trying to achieve and so you won't need to worry about double-escaping :)您应该高度考虑重构您的代码以使用正确的转义函数来实现您要实现的目标,因此您无需担心双重转义:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM