我是php的新手,不知道如何处理无效的json。所以我想删除那些具有无效字符串值的密钥
这里,tag_list
和description
具有无效的字符串值。
$json='{
"kind": "track",
"id": 132453675,
"created_at": "2014/02/01 02:01:11 +0000",
"user_id": 895073,
"duration": 323242,
"commentable": true,
"state": "finished",
"original_content_size": 7745028,
"last_modified": "2014/02/23 15:48:45 +0000",
"sharing": "public",
"tag_list": "hi " how are",
"permalink": "leaman",
"streamable": true,
"embeddable_by": "all",
"downloadable": false,
"purchase_url": null,
"label_id": null,
"purchase_title": null,
"genre": "Pop",
"title": "Leaman",
"description": "what"" is for",
"label_name": null,
"release": null,
"track_type": null,
"key_signature": null,
"isrc": null,
"video_url": null,
"bpm": null,
"release_year": null,
"release_month": null,
"release_day": null,
"original_format": "mp3",
"license": "all-rights-reserved",
"uri": "https://api.soundcloud.com/tracks/132453675",
"user": {
"id": 895073,
"kind": "user",
"permalink": "cloudsareghosts",
"username": "cloudsareghosts",
"last_modified": "2014/02/13 22:16:09 +0000",
"uri": "https://api.soundcloud.com/users/895073",
"permalink_url": "http://soundcloud.com/cloudsareghosts",
"avatar_url": "https://i1.sndcdn.com/avatars-000005407842-c7dt3c-large.jpg"
},
"permalink_url": "http://soundcloud.com/cloudsareghosts/leaman",
"artwork_url": "https://i1.sndcdn.com/artworks-000069579796-mhc0bg-large.jpg",
"waveform_url": "https://w1.sndcdn.com/r4xyDo8zqpfU_m.png",
"stream_url": "https://api.soundcloud.com/tracks/132453675/stream",
"playback_count": 253,
"download_count": 0,
"favoritings_count": 4,
"comment_count": 0,
"attachments_uri": "https://api.soundcloud.com/tracks/132453675/attachments",
"policy": "ALLOW"
}';
那么,我如何从php中的json中删除这些键tag_list
和description
呢。
感谢
似乎双引号混淆了JSON。您必须将这些"
替换为'"
因此:"description": "what"" is for",
应该是"description": "what'"'" is for",
根据您获取JSON的方式,您可以使用PHP str_replace
而不是手动执行。例如,如果这个JSON是由你自己的脚本创建的,你可以编辑它,以确保它输出向后斜杠。(循环对象并通过'"
重新标记值中的双引号。)
编辑:PHP示例:
$json = preg_replace_callback(
'/^([^"]*"[^*]+": )"(.*?)"(.*)$/mU',
function ($matches) {
return $matches[1].'"'.str_replace('"', ''"', $matches[2]).'"'.$matches[3];
},
$json);
此preg_replace_callback
将值声明中的双引号替换为'"
。请在此处查看:https://eval.in/294426