Aufspalten einer HTML-File in Doctype/Header/Body/...
das Ich
- php
0 der Ich
Hola,
ich habe einen String, in dem sich mehr oder weniger ein komplettes
HTML-Dokument befindet.
Vielleicht jedoch auch ein XHTML-Dokument. Deswegen brauche ich neben
dem head, den ich vorerst vom Rest des Dokumentes (zumindest mir aus-
reichend) mit
list($head, $body) = explode('</head>', $file);
abtrennen konnte, auch noch den Doctype.
Also habe ich mir ein kleines Regular-Expression-Pattern ausgedacht:
preg_match('/^(.*?)(<html.*?>.*?<head.*?>)(.+?)(</head>.+)$/', $file, $matches);
Wie man sieht, habe ich immer nach den .* bzw. .+ ein ? stehen.
Ich bin nämlich ehrlich gesagt zu faul, immer [^>] anstatt . zu
schreiben und gehe jetzt einfach mal davon aus, dass dasda:
http://de.selfhtml.org/cgiperl/sprache/regexpr.htm#gierig_genuegsam
auch bei der PHPlischen Regex-Engine geht.
Er findet nur nix. Gibt's bei der Funktionsvielfalt bei PHP nicht
irgendeine Funktion, die genau sowas erledigt?
Was ist an meinem pattern falsch?
Gruß,
das Ich
Hallo Ich,
preg_match('/^(.*?)(<html[^>]*>)([^<>]*)(<head[^>]*>)(.*?)(</head>)(.*)/is', $file, $matches);
// matches[0] = all
// matches[1] = doctype (if there is) || NOT YET
// matches[2] = <html> and attributes
// matches[3] = Area between <html> and <head>
// matches[4] = <head> and attributes
// matches[5] = Content of <head>
// matches[6] = </head> (not more ;)
// matches[7] = everything after </head> (body,....)
gruß,
der ich
PS: ;-)