0

字符串(JSON):{"title":"\"Copper\""}

我试过了

$output = str_replace('\\"', "", $output);

但我得到了

{"title":""      Copper""}

我的期望

{"title":"Copper"}
4

2 回答 2

2

您的示例代码不完整,因为您提供的内容确实有效:

php > $s='{"title":"\"Copper\""}';
php > echo $s;
{"title":"\"Copper\""}
php > echo str_replace('\\"',"",$s);
{"title":"Copper"}

(即来自php -a交互式会话)

换句话说,您的输入数据不是您认为的那样。

顺便说一句,正如其他人所说,最好json_decode在 JSON 上使用。然后只对感兴趣的字段进行字符串操作。然后使用json_encode将其转回 JSON。使用str_replaceor 正则表达式可能适用于简单的情况,但一旦你得到意外的数据,它可能会出现可怕的错误。

于 2012-11-25T22:58:38.910 回答
1

您是否使用自己的代码生成 JSON 字符串(而不是从第三方获取)?如果是这样,请发布生成 JSON 字符串的代码并详细说明您为尝试解决问题所做的工作。

如果您无法控制 JSON 字符串(和/或 JSON 字符串的创建者不会/无法修复它),那么修复它的一个 hacky 方法是:

$output = str_replace( '\"' , '' , $output );
于 2012-11-25T22:52:49.420 回答