Мне было любопытно, существует ли интерфейс / библиотека jQuery-стиля для PHP для обработки файлов HTML / XML, особенно с помощью селекторов стиля jQuery.
Я хотел бы делать такие вещи (все гипотетические):
foreach (j ("div> p> a") в качестве якоря) { // ... } print j ("# some_id") -> html (); print j ("a") -> eq (0) -> attr ("name");
Это всего лишь несколько примеров.
Я сделал столько же, сколько мог, но не смог найти то, что искал. Кто-нибудь знает, существует ли что-то в этих строках, или это то, что мне придется делать с нуля, используя domxml?
PHP Simple HTML DOM Parser использует селектора стиля jQuery. Примеры из документации :
Изменение HTML-элементов:
// Create DOM from string $html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>'); $html->find('div', 1)->class = 'bar'; $html->find('div[id=hello]', 0)->innertext = 'foo'; echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>
Скребок Slashdot:
// Create DOM from URL $html = file_get_html('http://slashdot.org/'); // Find all article blocks foreach($html->find('div.article') as $article) { $item['title'] = $article->find('div.title', 0)->plaintext; $item['intro'] = $article->find('div.intro', 0)->plaintext; $item['details'] = $article->find('div.details', 0)->plaintext; $articles[] = $item; } print_r($articles);
Делая еще одну охоту, я думаю, что, возможно, нашел именно то, что искал:
phpQuery – порт jQuery для PHP
Спасибо всем за ваши ответы, я обязательно буду учитывать их в других целях.
Вопрос старый, но вам нужен путь запроса .
Поверьте мне, вы ищете xPath. Я показываю вам пример
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <?php $dom = new DOMDocument; libxml_use_internal_errors(TRUE); $dom->loadHTMLFile('http://somewhereinblog.net'); libxml_clear_errors(); $xPath = new DOMXPath($dom); $links = $xPath->query('//h1//a'); //This is xPath. Really nice and better than anything foreach($links as $link) { printf("<p><a href='%s'>%s</a></p>\n", $link->getAttribute('href'), $link->nodeValue); } ?>
http://fluentdom.org/ – еще одна альтернатива.
Я написал библиотеку, которая дублирует методы манипуляции с DOM jQuery в PHP, но использует xpath, а не селектор стиля jquery. В противном случае он работает почти так же.
[Http://pxtreme.sourceforge.net] [1]
$doc = px("index.html"); // Create a px Object $headings=$doc->xpath("/html/body/h2"); // Select Elements to Manipulate $headings->addClass("NewLook"); // Change their Appearance px("index.html")->xpath("//h2")->addClass("NewLook"); // All in One Line // use anonymous functions in PHP 5.3 $doc->xpath("//p")->each( function ($pxObject, $index) { $str = $pxObject->get($index)->text(); if (mb_strpos($str, "pxtreme")) $px->attr("title", "Check out this paragraph!"); });
HtmlPageDom расширяет возможности DOM Crawler от Symfony и добавляет функции манипуляции DOM, подобные JQuery.
моя альтернатива – https://github.com/gymadarasz/xparser
быстрый и простой в использовании, пример:
$x('#nav a', function($elem) { $elem->href = '//myurl/' . $elem->href; });
Лучший, который я нашел, – https://github.com/scotteh/php-dom-wrapper
Он работает так же, как jQuery, и он работает быстро.
Я попробовал много библиотек из других ответов, но мне не удалось легко переносить манипуляции, которые я делал в jQuery. С этим это был легкий ветерок. Думаю, скоро это станет популярнее …
симплекс ? Его синтаксис отличается от jquery, но он действительно упрощает перемещение XML.
Однако он не будет работать для HTML, который не является допустимым XML.
Вы изучали использование класса DOMDocument PHP?
http://us2.php.net/manual/en/book.dom.php
Не уверен, что это именно то, что вы ищете, но это позволяет искать документ по различным атрибутам и другим подобным манипуляциям DOM.
Если вы используете современную структуру, вы должны также проверить их.
Эти компоненты могут быть установлены через композитор.