Я использую Guzzle с Laravel, чтобы получить объект из внешнего API с HTTP. API возвращает XML-объект, похожий на этот (https://www.w3schools.com/php/note.xml)
Мне нужно проверить одно значение тела ответа. Вот мой код:
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', 'https://www.w3schools.com/php/note.xml');
$stringBody = (string) $res->getBody()->getContents();
echo $stringBody;
который работает нормально, я имею в виду, что он отображает тело как на картинке ниже
но я не мог получить одно значение?
Я пробовал разные методы, но ни один из них не работает!
например, так:
$result = starts_with($stringBody, 'Tove');
или же
splitName = explode(' ', $res->getBody());
$first_name = $splitName[0];
echo $first_name;
не работает? Я думаю, что он считает основной текст пустым?
Я пытался использовать json_decode, но он не работает или больше не поддерживается.
Любая идея?
Спасибо
То, что вы получаете от ответа, является XML-контентом. Благодаря совместимости браузера с XML вы видите только текст. Вам просто нужен класс php SimpleXML для получения контента в соответствии с узлом XML. Вот пример кода
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', 'https://www.w3schools.com/php/note.xml');
$stringBody = (string) $res->getBody()->getContents();
$xml = simplexml_load_string($stringBody);
echo $xml->to;
Надеюсь, это поможет вам.
Других решений пока нет …