suit: Inhalt von <h1> ausgeben..

Beitrag lesen

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.