Преобразование строки 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);