Intereting Posts
соединение с базой данных codeigniter 3 с третьей базой данных Неопределенная переменная: ошибки – Laravel 5.2 PHP Неустранимая ошибка: Загрузчик должен появиться в качестве первой записи в php.ini Аудит Google Chrome при кешировании Я хочу, чтобы мой поиск показывал только результаты с соответствующими значениями полей. Как это делается? Страница заказов WooCommerce добавляет пользовательский столбец пользователя Как передавать информацию через веб-страницы веб-сайта Получить общее количество строк при использовании LIMIT Проверить флажок FCKEditor или нет используйте exec (); в php-скрипте для отправки электронной почты из оболочки регулярное выражение в php: взять кратчайшее соответствие strtotime не работает с TIME? Вытягивание изображения из пользовательской таксономии с помощью ACF Форма отправки данных 2 раза Черный список слов по содержимому для фильтрации сообщения

Поиск файла XML с использованием PHP

У меня есть XML-файл:

<quotes> <quote> <symbol>7UP</symbol> <change>0</change> <close>45</close> <date>2011-08-24</date> <high>45</high> </quote> </quotes> 

Я хочу искать этот документ по symbol и получить соответствующее значение close в PHP.

Благодарю.

Используйте XPath.

Использование SimpleXML:

 $sxml = new SimpleXMLElement($xml); $close = $sxml->xpath('//quote[symbol="7UP"]/close/text()'); echo reset($close); // 45 

Использование DOM:

 $dom = new DOMDocument; $dom->loadXML($xml); $xpath = new DOMXPath($dom); $close = $xpath->query('//quote[symbol="7UP"]/close/text()')->item(0)->nodeValue; echo $close; // 45 

… для числовых значений, в частности, с DOM, вы можете сделать (как было предложено @fireeyedboy ):

 $close = $xpath->evaluate('number(//quotes/quote[symbol="7UP"]/close/text())'); echo $close; // 45 

Вы можете просто проанализировать свой XML-файл на объект или массив. Это упрощает работу с PHP. Для этого PHP имеет simpleXML , который включен по умолчанию:

http://www.php.net/manual/en/simplexml.installation.php

Пример:

 $xml = new SimpleXMLElement($xmlstr); foreach ($xml->quotes->quote as $quote) { // Filter the symbol echo ( (string) $quote->symbol === '7UP') ? $quote->close : 'something else'; }