André Laugks: Mit Regex Meta - Angaben auslesen ?

Beitrag lesen

Hallo Christoph!

Ein PHP-Script soll HTML-Dateien, die zum selben "Projekt" gehören, einlesen und darstellen. Das ist noch kein Problem. Jetzt hat das Script selbst aber schon einen Header-Bereich mit <!DOCTYPE...> und <meta ...>. [...]

So, wie ich das verstanden habe (mit der leckeren Flasche Wein in meinem Kopf), möchtest Du alles zwischen header einlesen.

Mit dem Ausdruck

/<!DOCTYPE.*?>[\s]*<html.*?>(.*)<body.*?>/is

sollte (getestet) im Index mit der Nr. 1 der gesamte header stehen.

preg_match('/<!DOCTYPE.*?>[\s]*<html.*?>(.*)<body.*?>/is', $html_datei, $match);
echo $match[1];

// $html_datei
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Hier ist der Titel</title>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="stylesheet" type="text/css" href="allgemein.css">
<script type="text/javascript">
<!--
// Hier ist ein Script
//-->
</script>
</head>
<body>
Hier ist der Quelltext
</body>
</html>

Wenn ich den Suchausdruck nach dem Schema /<.+>/ "gierig" mache, hält er ja bei <body> nicht an, [...]

IMHO ist das Plus der Übeltäter. Das Plus bedeutet ja mindestens einmal. Es ist gefräßiger als ein Fragezeichen (gar nicht oder nur einmal).

André Laugks

--
Die Frau geht, die Hilti bleibt!