将JavaScript字符串转换为PHP数组

9

我正在使用php爬取网站以获取一些数据。我得到的数据是一个有效的javascript数组。

          "['v42, 2015', 23428, 30243, 76993]
                ,
          ['v43, 2015', 24060, 30401, 73412]
                ,
          ['v44, 2015', 22855, 29720, 71573]
                ,
          ['v45, 2015', 24455, 30757, 78991]
                ,
          ['v46, 2015', 24275, 30398, 84424]"

我现在有一个 PHP 字符串,但是如何将其转换为 PHP 数组?


3
请(重新)参观一下,四处看看,并阅读[帮助中心],特别是如何提出好问题部分。你尝试了什么?你卡在哪里了? - T.J. Crowder
3个回答

8
$string = "['v42, 2015', 23428, 30243, 76993]
                ,
          ['v43, 2015', 24060, 30401, 73412]
                ,
          ['v44, 2015', 22855, 29720, 71573]
                ,
          ['v45, 2015', 24455, 30757, 78991]
                ,
          ['v46, 2015', 24275, 30398, 84424]";

如果您添加正确的开始和结束方括号分隔符,则它是有效的js数组。此外,为了符合php json解析器的要求,字符串分隔符必须使用双引号而不是单引号,因此需要进行快速替换。
然后,您可以像这样解码它:
$ary = json_decode('['.str_replace("'",'"',$string).']', true);

不知道为什么从你的方法中得到了 null - Andrew
1
@swidmann可能已经发现了问题,需要用双引号替换单引号。我正在更新我的答案。 - Calimero

2
单引号在JS中可能是有效的,但JSON有时会出现问题。 您可以在此处尝试:JSONLint 为了获得有效的JSON,只需用双引号"替换单引号',要获得一个包含数组的数组,您必须用括号[]将字符串括起来。
尝试以下示例代码:
$string = "['v42, 2015', 23428, 30243, 76993]
                ,
          ['v43, 2015', 24060, 30401, 73412]
                ,
          ['v44, 2015', 22855, 29720, 71573]
                ,
          ['v45, 2015', 24455, 30757, 78991]
                ,
          ['v46, 2015', 24275, 30398, 84424]";

$string = str_replace( "'" , '"', $string );
$string = '['.$string.']';

echo "<pre>";
var_dump( json_decode( $string ) );

1
你可以尝试用''替换[ ],然后将字符串分割。
$string = str_replace(']', '', str_replace('[', '',$string));
$array = explode(',', $string);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接