PHP在json字符串中的变量前后添加双引号
Posted
技术标签:
【中文标题】PHP在json字符串中的变量前后添加双引号【英文标题】:PHP Add double quotes before and after variable in json string 【发布时间】:2018-10-17 02:28:38 【问题描述】:我正在尝试为每个变量添加双引号,例如 json 字符串中的 file:
和 label:
。例如:
file:"File_Name.mp3",file:"File_Name.mp4",label:"720",file:"File_Name.mp4",label:"360"
应该是:
"file":"File_Name.mp3","file":"File_Name.mp4","label":"720","file":"File_Name.mp4","label":"360"
我该怎么做?我读了一篇 *** There 的文章,但我的问题并没有解决。我应该使用正则表达式。不幸的是,但我是新人。
如果标签是 360,我需要得到file name
,那么 php 代码将给出文件名,正如我在 php 中指出的那样。
谢谢。
【问题讨论】:
您的输入无效JSON。你是怎么得到它的? @axiac 我认为它只是 JSON 的一部分。所以它可能是有效的。 @revo 即使被[
和]
包围变成一个数组,它仍然无效,因为JSON总是将对象键编码为字符串(使用双引号)。
@axiac 这就是 OP 要求它的原因?!
'不幸的是,但我是新人' - 这很好,因为人们会提供帮助。那么到目前为止,您发现了什么,您是否设法学习了有关正则表达式的任何内容以及您尝试了什么。
【参考方案1】:
好的,如果您不熟悉这一切,也许正则表达式不是最好的答案。
您也可以像这样使用简单的str_replace
函数 (doc):
str_replace(array('file:', 'label:'),array('"file":', '"label":'),$your_json_string);
要利用 php 中的 json,您需要使用json_decode
对其进行解码,并使用循环检查标签值(我建议使用foreach
循环)。
【讨论】:
但是当我这样做时我没有得到任何结果......!$myNewJsonString = str_replace(array('file:', 'label:'),array('"file":', '"label":'),$get_sourceArray); $someArray = json_decode($myNewJsonString, true); echo '<pre>'; print_r ($someArray); echo '</pre>'; exit;
由于“如果无法解码 json,则返回 NULL”,可能您的 JSON 中仍然存在一些格式错误。 $myNewJsonString = str_replace(array('file:', 'label:'),array('"file":', '"label":'),$get_sourceArray); echo $myNewJsonString; $someArray = json_decode($myNewJsonString, true); print_r ($someArray);
试试这个看看发生了什么,如果你在 JSON 字符串中没有看到任何问题,可以用这些信息发布一个新问题。以上是关于PHP在json字符串中的变量前后添加双引号的主要内容,如果未能解决你的问题,请参考以下文章