Для разбора (парсинга) файла с XHTML/XML можно использовать regexp, но результат получится не быстрым и не надежным, т.к. структура документа может минется и для составления хорошего regexp’a придется поломать голову. И тут на выручку приходит XPath, который позволяет легко выбирать из XHTML/XML значения внутри тегов, атрибутов, составляя запросы. Метод чем-то похож на роботу с записями в БД.
В PHP для этого нам понадобится объект класса DOMDocument, который будет хранить структуру документа и DOMXPath, который будет выполнять запрос на поиск нужного значения.
Пример ниже показывает обращение к вымышленной странице, на которой есть таблицей с семью столбцами. Запрос выбирает текстовое значение шестого столбац из строки, css-класс которой имеет значение status1:
$doc = new DOMDocument(); $doc->loadHtmlFile('path/to/file/or/page'); $xpath = new DOMXPath( $doc ); $cell = $xpath->query("//table/tr[@class='status1']/td")->item(6)->nodeValue;
Если вы с XPath не очень знакомы, а нужно выбрать конкретный элемент с страницы и потом обработать в PHP, то для Firefox есть два расширения:
Дополнительное чтиво:
Наткнулся на библиотеку FluentDOM предоставляет интерфейс для работы с DOMDocument, сам способ роботы с документом похож на аналогичный из jQuery.
Вот простой пример с сайта разработчика:
require_once('../FluentDOM.php'); echo FluentDOM($xml) ->node( FluentDOM($samples) ->find('//b[@id = "first"]') ->removeAttr('id') ->addClass('imported') ) ->replaceAll('//p');
Что сказать? Удобно, вроде многофункционален, честно признаться пока сам не пробовал, но пример многообещающий :)