Regulärer Ausdruck

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
Zyancali
Beiträge: 51
Registriert: So 13.Nov, 2005 11:11
Wohnort: ?sterreich/Stmk/Wolfsberg
Kontaktdaten:

Regulärer Ausdruck

Beitrag von Zyancali »

Hi!

Um aus einer HTML-Datei nur die Headtags (eig .nur deren Inhalt) zu bekommen,
benutze ich folgenden RegEx (benutzte Anleitung):

Code: Alles auswählen

<head\s+.*?[^>]*(.*?)<\/head>
Den hab ich mir "zusammenkopiert" bzw geschrieben...

Leider funktioniert das überhaupt nicht...
Bitte bessert mich aus, Danke!
Fatal error: Maximum execution time of 30 seconds exceeded in /usr/web/root/oxpusweb/viewtopic.php on line 45
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

So schon eher:

Code: Alles auswählen

preg_match('#<head(.*?)>(.*?)<\/head>#i', $content, $treffer);
echo $treffer[2];
Wobei $content die HTML-Datei beihaltet und $treffer die Suchergebnisse bekommt.
$treffer[0] ist hierbei der komplette gefundene String, die weiteren Array-Values beinhalten jeweils das Ergebnis der Einklammerungen. $treffer[2] in diesem Falle also alles, was zwischen <head> und </head> steht.
Das echo gibt das nur aus, kann aber auch eine Variablenübergabe oder weitere Verarbeitung sein...

Zum regulären Ausdruck:
Zunächst muss sichergestellt werden, daß im <head>-Tag kein weiterer Eintrag enthalten ist (erste Klammer). Kann ja sein.
Dann eben alles rausfischen, was zwischen den Tags steht mit der 2. Klammer.
In der Klammer wird nun mit dem Punkt nach jedem Zeichen gefahndet, das durch den Stern kein bis unendlich mal vorkommen soll und durch das Fragezeichen immer wiederholt wird, bis der Suchstring eben zu Ende ist.
Durch die Klammerungen werden Unterabfragen erstellt, deren Ergebnisse zwischengespeichert werden. Diese landen dann letztendlich in $treffer, welches als Array eben alle Ergebnisse beinhaltet.

Ja, reguläre Ausdrücken können so schön komplex sein...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten