Есть ли класс / библиотека PHP, который позволит мне запрашивать документ XHTML с помощью селекторов CSS? Мне нужно очистить некоторые страницы для данных, которые очень легко доступны, если я могу каким-то образом использовать селектор CSS (jQuery испортил мне!). Есть идеи?
После дальнейшего Googling (исходные результаты были не очень полезны), похоже, на самом деле для этого есть библиотека Zend Framework, а также некоторые другие:
XPath – довольно стандартный способ доступа к узлам XML (и XHTML) и обеспечивает гораздо большую точность, чем CSS.
Еще один:
http://querypath.org/
Великий – это компонент Symfony 2, CssSelector \ Parser Introduction . Он преобразует селектора CSS в выражения XPath. Взгляните =)
Исходный код
Для пользователей jQuery наиболее интересным может быть порт jQuery для PHP , который является phpQuery . Портируются практически все разделы библиотеки. Кроме того, он содержит плагин WebBrowser , который может использоваться для пути / процессов веб-скрепок всего сайта (например, доступ к данным, доступным после входа в систему). Он просто имитирует веб-браузер на сервере (события и файлы cookie тоже). В последних версиях экспериментальная поддержка пространств имен XML и CSS3 "|" селектор .
Я закончил использование PHP Query Lite , это очень просто и имеет все, что мне нужно.
Для разбора документа я использую DOM . Это может легко решить вашу проблему, если вы знаете имя тега (в этом примере «div»):
$doc = new DOMDocument(); $doc->loadHTML($html); $elements = $doc->getElementsByTagName("div"); foreach ($elements as $e){ if ($e->getAttribute("class")!="someclass") continue; //its a div.classname }
Не уверен, что DOM позволяет сразу получить все элементы документа … вам может потребоваться обход дерева.
Я написал мой, основанный на движке селектора CSS Mootools http://selectors.svn.exyks.org/ . он полагается на способность расширения simplexml (поэтому он доступен только для чтения)