【问题标题】:PHP Add double quotes before and after variable in json stringPHP在json字符串中的变量前后添加双引号
【发布时间】: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"}

我该怎么做?我读了一篇 stackoverflow There 的文章,但我的问题并没有解决。我应该使用正则表达式。不幸的是,但我是新人。

如果标签是 360,我需要得到file name,那么 php 代码将给出文件名,正如我在 php 中指出的那样。

谢谢。

【问题讨论】:

  • 您的输入无效JSON。你是怎么得到它的?
  • @axiac 我认为它只是 JSON 的一部分。所以它可能是有效的。
  • @revo 即使被[]包围变成一个数组,它仍然无效,因为JSON总是将对象键编码为字符串(使用双引号)。
  • @axiac 这就是 OP 要求它的原因?!
  • '不幸的是,但我是新人' - 这很好,因为人们会提供帮助。那么到目前为止,您发现了什么,您是否设法学习了有关正则表达式的任何内容以及您尝试了什么。

标签: php json regex


【解决方案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 字符串中没有看到任何问题,可以用这些信息发布一个新问题。
猜你喜欢
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2019-08-09
相关资源
最近更新 更多