Ich habe in diesem Blog ja bereits einmal darüber geschrieben, wie man mit Hilfe des Zend Frameworks fremde Seiten verarbeiten kann. Einen zweiten, sehr eleganten Weg, wie man fremde HTML Seiten verarbeiten kann, bietet die Bibliothek phpQuery. Diese greift zwar auch auf das Zend Framework zurück, bringt davon aber nur zwei Teilkomponenten mit und ist dadurch viel schlanker.
phpQuery greift die Vorgehensweise von jQuery auf und bietet eine zentrale Funktion an, mit deren Hilfe DOM Elemente in einem Dokument selektiert werden können. Beispielsweise liefert die folgende Funktion alle ‘ul’ Elemente.
$uls = pq('ul');
Mit phpQuery hat man natürlich auch die Möglichkeit, wie bei jQuery auch DOM Elemente zu manipulieren, zu löschen oder neue einzufügen.
Will man also beispielsweise alle Suchergebnisse von Google abgreifen, so reicht folgender Code aus, der dann alle gefundenen URLs ausgibt:
require('phpQuery/phpQuery.php');
$q = "phpquery";
$doc = phpQuery::newDocument(
file_get_contents('http://www.google.com/search?q='.urlencode($q))
);
foreach(pq('.g', $doc) as $entry) {
$url = pq($entry)->find('.r a')->attr('href');
$title = pq($entry)->find('.r a')->html();
echo '<a href="'.$url.'">'.$title.'</a><br />';
}
Mir gefällt der Ansatz, die Funktionalität von jQuery teilweise in die Welt von PHP zu übertragen. Jeder, der in irgendeiner Form HTML in PHP verarbeiten muss, sollte sich diese Bibliothek auf jeden Fall genauer ansehen.
21. März 2010 um 21:11 Uhr
[...] phpQuery – fremde Seiten verarbeiten. [...]
8. April 2010 um 11:19 Uhr
Sehr cooles Script! Ich hatte bisher echt Probleme beim Parsen von Webseiten mit PHP da die meisten kein valides XHTML aufweisen.
8. April 2010 um 13:17 Uhr
Wenn du da Probleme hast, dann empfehle ich dir, den HTML Text zuvor zu korrigieren. Mit htmLawed oder HTML Purifier gibt es schon zwei fertige Lösungen, mit denen du das einfach und schnell machen kannst.
Viele Grüße
Tobi
9. Oktober 2010 um 11:29 Uhr
[...] Ein Biespiel findet sich hier: Mit Hilfe von phpquery fremde Seiten verarbeiten [...]
2. Februar 2011 um 07:51 Uhr
Awesome blog! Is your theme custom made or did you download it from somewhere? A theme like yours with a few simple tweeks would really make my blog shine. Please let me know where you got your theme. Many thanks
2. Februar 2011 um 20:01 Uhr
Hi Theodore,
I have created the theme myself. But I can recommend following collections of good and free themes:
http://www.smashingmagazine.com/2010/08/19/100-free-high-quality-wordpress-themes-for-2010/
http://www.webdesignerdepot.com/2010/04/60-awesome-new-wordpress-themes/
Regards
Tobi