PHP HTML-Code verarbeiten - Content entfernen

Überkinger

Lieutenant
Registriert
Juli 2010
Beiträge
600
Hallo,

ich verarbeite eine HTML-Datei die ich via file_get_contents (/test.htm) einlese. Dieser Content soll verarbeitet werden. So soll zwischen zwei Tags der Inhalt entfernt werden. Ich habe mich schon schlau gemacht, bin dennoch ins Stolpern geraten.

Frage. Der Content zwischen <!--test--> und <!--/test--> soll ebenso entfernt werden wie die beiden Kommentar. Leider klappt folgender Code nicht. Es gibt keine Fehlermeldung

PHP:
// HTML-Datei einlesen
$content = file_get_contents (test.htm);
$a = str_replace ("#<!--test-->(.*?)<!--/test-->#si","",$content);

Wo liegt mein Denkfehler?
 
Yuuri schrieb:
str_replace != preg_replace

Danke schön. Mit preg_replace klappts.

$a = preg_replace ("#<!--test-->(.*?)<!--/test-->#si","",$content);
Ergänzung ()

Noch eine Frage: Ich habe noch nirgends ne deutsche Doko zu den Eingrenzungen gefunden.

In manchen Beispielen ist die Eingrenzung mit den Zeichen / oder @ oder wie in meinem Beispiel mit #. Warum dies?
 
Du brauchst in regulären Ausdrücken einfach Delimiter, welche den Beginn und das Ende kennzeichnen. Das Zeichen kannst du dir dabei aussuchen wie du lustig bist, du musst nur sicher gehen, dass der String damit anfängt und endet (plus evtl. zusätzliche Modifier). Innerhalb des Strings muss dieser Delimiter aber escaped werden. Du kannst also alles von @, 1, 2, 3, a, O, M, z, /, #, K oder sonst was verwenden. Ich persönlich nutze immer #, weil es kaum im Quelltext vorkommt (bzw. danach gesucht werden muss) und es fix erreichbar ist auf der Tastatur.

Dokumentation: php.net
 
Zum Modifer S noch ne Frage:

Zitat:
Modifier s (dot all)

Normalerweise trifft der Punkt nicht auf Zeilenumbrüche zu. Mit diesem Schalter werden mit dem Punkt auch Zeilenumbrüche erkannt.


Das verstehe ich nicht. Was hat ein Punkt mit einem Zeilenumbruch zu tun?
 
Steht doch da was es macht. :) Der Punkt agiert also nach dem Muster [.\r\n] anstatt nur nach den üblichen Zeichen ohne Zeilenumbruch.
 
Zurück
Oben