我想使用 preg_replace() 替换 PHP 中 {} 之间的字符串中的“和”。
所以:
This is "some" {"text" : 'duudu', 'duuue' : "yey" }
应该:
This is "some" {\"text\" : \"duudu\", \"duuue\" : \"yey\" }
你能建议吗?
我想使用 preg_replace() 替换 PHP 中 {} 之间的字符串中的“和”。
所以:
This is "some" {"text" : 'duudu', 'duuue' : "yey" }
应该:
This is "some" {\"text\" : \"duudu\", \"duuue\" : \"yey\" }
你能建议吗?
您可以使用 preg_replace_callback 来解决这个问题。考虑以下代码:
$str = 'This is "some" {"text" : \'duudu\', \'duuue\' : "yey" } "and" {"some", "other"} "text"';
echo preg_replace_callback('~({[^}]*})~', function($m) {
return preg_replace('~(?<!\\\\)[\'"]~', '\"', $m[1]);
}, $str) . "\n";
$repl= preg_replace('~(?<!\\\\) [\'"] (?! (?: [^{}]*{ [^{}]*} ) * [^{}]* $)~x',
'\"' , $str);
输出:
This is "some" {\"text\" : \"duudu\", \"duuue\" : \"yey\" } "and" {\"some\", \"other\"} "text"