Преобразование строки javascript в массив php

я очищаю веб-сайт с помощью 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 ответов


$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, если вы добавите правильный разделитель квадратных скобок start & end. Кроме того, чтобы соответствовать требованиям синтаксического анализатора php JSON, разделители строк должны быть с двойными кавычками вместо одинарных, поэтому должна быть выполнена быстрая замена.

затем вы можете декодировать его так:

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

одинарные кавычки могут быть действительны в 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 ) );

вы можете попробовать заменить [ ] С '' и затем разрыв строки.

$string = str_replace(']', '', str_replace('[', '',$string));
$array = explode(',', $string);