用PHP中的JSON字符串中的单引号替换双引号

时间:2018-08-28 04:22:49

标签: php json preg-replace

我有一个包含一些html的json字符串,它是attrubutes。我试图在此字符串中转义或将双引号替换为单引号。我的代码可以使用某些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>"}

2 个答案:

答案 0 :(得分:3)

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

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

结果

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

答案 1 :(得分:-1)

尝试以下方法:str_replace('"', "'",$json);

$json='{"en":"<b class="test" size="5" >Description</b>"}';
$json=str_replace('"', "'",$json);
echo htmlspecialchars($json);

输出将为{'en':'<b class='test' size='5' >Description</b>'}