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字符串中的变量前后添加双引号的主要内容,如果未能解决你的问题,请参考以下文章

js如何将字符串前后的引号去掉

php中怎么把json双引号前加上转义符\

从 JSON 对象/字符串或 Java 脚本变量中删除开头和结尾的双引号?

双引号中的 PHP 静态变量

学习记录7

PHP