Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Json Javascript格式转换为PHP可读格式_Javascript_Php_Json_Curl - Fatal编程技术网

将Json Javascript格式转换为PHP可读格式

将Json Javascript格式转换为PHP可读格式,javascript,php,json,curl,Javascript,Php,Json,Curl,我有一堆json文件要通读,并使用PHP将一些信息存储到db中 问题是这些json键没有引号,例如: PHP不承认它是json。但是,如果我使用这个json文件,并在带有javascript函数“json.stringify”的浏览器中运行它,那么数据的格式将使用引号,可以在PHP中使用 因此,我编写了一个脚本,用javascript解析这些文件,然后将其发布到PHP脚本,将其写入服务器。在浏览器中运行良好,但我无法自动执行此操作,因为curl不运行javascript 有没有办法将json格

我有一堆json文件要通读,并使用PHP将一些信息存储到db中

问题是这些json键没有引号,例如:

PHP不承认它是json。但是,如果我使用这个json文件,并在带有javascript函数“json.stringify”的浏览器中运行它,那么数据的格式将使用引号,可以在PHP中使用

因此,我编写了一个脚本,用javascript解析这些文件,然后将其发布到PHP脚本,将其写入服务器。在浏览器中运行良好,但我无法自动执行此操作,因为curl不运行javascript


有没有办法将json格式(不带引号)转换为PHP可读格式?我尝试过这个建议…regex选项不起作用,我也不知道如何使用PEAR,尽管我的服务器有PEAR版本:1.10.1和PHP版本:5.4.45

这是我解决您问题的方法。是的,它是regex,但它可以工作

$text = preg_replace(["/\\\\'/", '/("(.*?)"|(\w+))(\s*:\s*(".*?"|.))/s'], ["'", '"$2$3"$4'], $text);
$text = json_decode($text);
$text-是格式错误的json

最后一点意见是,这应该有效:

$text = preg_replace(["/\\\\'/", '/("(.*?)"|(\w+))(\s*:\s*(".*?"|.))/s', '/((:\s*)(0\d+))/'], ["'", '"$2$3"$4', '$2"$3"'], $text);

不可靠!将此
“2013-01-05T08:02:01”更改为
“2013-01-”05T08:“02”:01”
我的更新答案如何?好的,正则表达式专家-有效!但我必须
$text=str\u替换(“\”,“,$text”)在json解码之前。
。如果可以将其应用到正则表达式中,这将是完美的一行解决方案。当值有
时,我遇到了另一个小故障,比如
“请微笑:”,
变成
“请微笑”:“
。trincot正则表达式工作了。这是工作代码:
$text=preg\u replace([“/\\\\\\\\\'/”,“/”,“/(.*?)”)\w+)(\s*:\s*(“*?“|”)/s'],[“'”,“$2$3”$4'],$text);
另一个抓到了前面带零的整数,如:“code”:012345将不会在PHP中进行json_解码。可以修改正则表达式以使以零开头的整数被引用吗?请参阅我添加到您提到的问题中。它也应该解决您的问题。感谢您为我的问题发布的正则表达式,它工作得很好,但以零开头的整数如下:“代码”:012345将不会在PHP中进行json_解码。是否可以修改正则表达式以使以零开头的整数被引用?我明白你的意思,但如果它们在JavaScript表示法中是整数,那么它们在json中也应该是整数以保持一致,因此我建议一种解决方案,删除不必要的预填充零。如果你发现当然,我会添加这样一个解决方案,但除此之外(如果需要引用),我建议您提出一个新问题,因为这是一个非常具体的行为,不符合我的答案的上下文。当然,可以删除不必要的预填充零。好的,我在中也为此添加了一个正则表达式。