@ilia_belousov

Как можно распарсить такую строку?

Добрый вечер.
Как можно распарсить такую строку, используя PHP? Меня интересует получение параметра Result из тега .
<html><content></content><json><![CDATA[{"type":"datasource", "Result":true,"HasVKBinding":true}]]><![CDATA[{"type":"webparams", "ClientScriptId":"string-CommonController","ContainerId":"string-CommonController","ClientControlClass":"string-CommonController","DisableDomRendering":"bool-False","ExpireMinutes":"integer-0"}]]></json></html>


Благодарю за помощь,
Илья
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 2
Можно использовать simplexml_load_string. На выходе получится объект, с которым проще работать.
$xml = simplexml_load_string('<html><content></content><json><![CDATA[{"type":"datasource", "Result":true,"HasVKBinding":true}]]><![CDATA[{"type":"webparams", "ClientScriptId":"string-CommonController","ContainerId":"string-CommonController","ClientControlClass":"string-CommonController","DisableDomRendering":"bool-False","ExpireMinutes":"integer-0"}]]></json></html>');
$array_from_json = json_decode($xml->json, 1);
Ответ написан
@DanKud
Если конструкция строки всегда одинаковая, то можно так:
$html = 'ваша_строка';
preg_match('/"Result":(.*?),/is', $html, $m);
$result = $m[1];
var_dump($result); /* string(4) "true" */

Если JSON может меняться, то раскодировать сам JSON можно так:
$html = 'ваша_строка';
preg_match('/CDATA\[(.*?)\]/is', $html, $m);
$json = $json = json_decode($m[1], true);
$result = $json['Result'];
var_dump($result); /* bool(true) */
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы