首页 > 解决方案 > 用php中json字符串中的单引号替换双引号

问题描述

我有一个包含一些 html 的 json 字符串,它是属性。我试图在这个字符串中用单引号转义或替换双引号。我的代码适用于一些 html 属性,但不适用于所有属性。

我的例子:

$json='{"en":"<b class="test" size="5" >Description</b>"}';
$json=preg_replace('/([^:,{])"([^:,}])/', "$1".'\''."$2",$json);
echo htmlspecialchars($json);
//ouput: {"en":"<b class='test' size='5" >Description</b>"}


需要的结果:

{"en":"<b class='test' size='5' >Description</b>"}

标签: phpjsonpreg-replace

解决方案


我希望这能按预期工作([^{,:])"(?![},:])

$json='{"en":"<b class="test" size="5" >Description</b>"}';
$json=preg_replace('/([^{,:])"(?![},:])/', "$1".'\''."$2",$json);

结果是

{"en":"<b class='test' size='5' >Description</b>"}

推荐阅读