Для разбора (парсинга) файла с 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');
Что сказать? Удобно, вроде многофункционален, честно признаться пока сам не пробовал, но пример многообещающий :)