JSON внутри функции, (PHP разбор) - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть что-то подобное в * .txt файле.

function_name({"one": {"id": "id_for_one", "value": "value_for_one"}, ...});

И я получаю файл так:

$source = 'FILE_NAME.txt';
$json = json_decode(file_get_contents($source),true);
echo $json['one']['value'];

Это не работает, но когда я удаляю function_name( и );, это работает. Как разобрать его, не удаляя эти строки?

Ответы [ 5 ]

1 голос
/ 21 февраля 2012

Как разобрать его без удаления этих строк?

Нет пути.
Это должно работать для вас.

$data = file_get_contents($source);
$data = substr($data, strlen("function_name("));
$data{strlen($data)-1}=$data{strlen($data)-2}=" ";
$json = json_decode($data,true);

И {}, и [] работают со строками для доступа к отдельным символам.

1 голос
/ 21 февраля 2012

Вы пытаетесь получить строку в файле и декодировать ее как файл JSON.

'имя_функции' не является допустимой строкой JSON, остальное внутри yes.

1 голос
/ 21 февраля 2012

Вам придется удалить эти строки.С частью function_name это недопустимый JSON.

Строка JSON обычно либо начинается с { (запись объекта) или [ (запись массива), но также может быть скалярным значением, например строкой.или номер.Вы не можете разобрать его, предварительно не убедившись, что строка является допустимой JSON.

1 голос
/ 21 февраля 2012

Вы не можете. Это не действительно JSON с теми. Возьмите подстроку, которая исключает их.

0 голосов
/ 21 февраля 2012

Функция в вашем текстовом файле означает, что это не файл JSON.

Удалите строку с помощью регулярного выражения, и ваша проблема исправлена.

Если функция является фиксированным именем, сделайте что-то вроде этого:

$source = 'FILE_NAME.txt';
$json_content = str_replace('function_name(', '', file_get_contents($source));
$json_content = substr($json_content,0,-2);
$json = json_decode($json_content,true);
echo $json['one']['value'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...