Für den php-Anfänger, der diesen Thread auf der Suche nach Antworten ergoogelt- ich hab die Lösung inzwischen rausgefunden. Im folgenden kleinen Skript wird der Inhalt der obersten H1 der aktuellen Seiten ausgegeben:
Für PHP-Anfänge empfehle ich dann doch die vorgeschlagene Variante mit strpos() und substr(), da sie wesentlich kürzer ist - deine Variante scheint mir nicht sehr ressourcenschonend zu sein :)
Oder aber mit preg_match() - der elegante Weg:
$pattern = '/<h1>(.*)<\/h1>/iU';
$subject = 'foo <h1>bar</h1> baz <h1>qux</h1> quux';
preg_match($pattern, $subject, $matches);
echo $matches[0] . "\n"; // enthält den kompletten Ausdruck - also "<h1>bar</h1>"
echo $matches[1]; // enthält den ersten subpattern, also "foo"
Erklärung zum Suchmuster:
// = Begrenzer für das Muster
. = beliebiges zeichen
+ = mindesten 1x, aber beliebig oft
() = Unter-Muster welches gespeichert wird
i = case-insensitve
U = nicht gierig
Wörtlich:
finde <h1> (bzw. auch H1 weil ja 'i' gesetzt ist) und speichere eine belibige Zeichenkette bis zum unmittelbar nächsten auftreten (wegen des 'U'-Modifikators) von </h1>.
Ohne den Modifikator U kann es aufgrund der Gierigkeit dazu führen, dass "bar</h1> baz <h1>qux" gefunden würde.
Wenn man alle h1-Elemente haben möchte kann man natürlich auch preg_match_all() verwenden.