<?php
// Datei "back.html" einlesen
$template = file_get_contents("back.html");
// Nach allen Markern suchen und gefundenes in $matches speichern
// Die erste Raute bestimmt den Anfang des Suchmusters, die zweite Raute das Ende.
// Das "s" hinter der zweiten Raute sagt der Suchfunktion, dass du über mehrere Zeilen suchen willst,
// das "i" sagt, dass du nicht-case-sensitive suchen willst.
//
// Dafür nötiges RegEx-Pattern: <!--([a-z0-9_\-]+)-->(.*?)<!--/\\1-->
// Zur Erklärung:
// ([a-z0-9_\-]+) sucht zwischen <!-- und --> nach Zahlen und Buchstaben, sowie Unterstrich _
// und Minuszeichen -, wobei dieses mittels eines Backslashes \ escaped werden muss,
// sonst gibt's nen Fehler. Das Pluszeichen hinter ] besagt, dass nicht nur EIN Zeichen,
// sondern beliebig viele Zeichen vorkommen können und berücksichtigt müssen. Begrenzen
// kann man die Anzahl der Zeichen so:
// ([a-z0-9_\-]{1,10})
// Statt des Plus-Zeichens die geschweiften Klammern, in dem Fall müssen mindestens 1 Zeichen
// und dürfen maximal 10 Zeichen vorhanden sein.
// (.*?) sucht nach dem Content, der zwischen den Markern sitzt und speichert sie im Array
// $matches, welches man mittels print_r testweise komplett ausgeben kann.
// <!--/\\1--> dies ist der "Endmarker". Wichtig sind die beiden Backslashes und die 1. Im
// Anfangsmarker steht beispielsweise <!--hallo-welt-->, im Endmarker <!--/hallo-welt-->, hallo-welt
// ist also der Wert, der in beiden Markern stehen muss. Doch da man ALLE Marker haben will,
// ist es dumm, wenn man nach fix vorgegebenen Markernamen sucht - klug ist es, wenn man ALLE
// Markernamen mit einem Suchvorgang aufnimmt. Durch die Angabe \\1 wird der erste Treffer,
// der mittels ([a-z0-9_\-]+) gefunden wurde, in \\1 gespeichert, sodass der Anfangsmarker
// und der Endmarker dieselben Werte haben, und nicht plötzlich zwei unpassende Marker wie
// <!--hallo-welt--> irgendeintext hier <!--/welt-hallo--> gefunden und so völlig
// unerwünschte Ergebnisse ausgeliefert werden..
// suche nach allen Markern:
$find = preg_match_all("#<!--([a-z0-9_\-]{1,8})-->(.*?)<!--/\\1-->#si", $template, $matches);
if($find):
// wenn $find wahr ist, dann Inhalt von $match ausgeben
echo "<pre>";
print_r($matches);
echo "</pre>";
else:
echo "nix gefunden :(";
endif;
?>