oneside Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 Hallo, ich muss aus einem HTML-Text (in dem viele HTML-Kommentare sind) per php alle HTML-Kommentare (inkl. Tags) löschen. BLA BLA BLA <!--Kommentar--> Weiterer Text... Wie lautet der Reguläre Ausdruck für ereg_replace? Anfang und Ende sind ja beim Tag immer gleich, nur der Zwischenraum ist variabel... Thx Oneside Zitieren
Carnie Geschrieben 31. Januar 2006 Geschrieben 31. Januar 2006 mmh ich würde sagen "<!--*-->" Das Sternchen als Platzhalter für beliebige Zeichen. Zitieren
Markus.K Geschrieben 31. Januar 2006 Geschrieben 31. Januar 2006 Als "Platzhalter" muss hier die Folge (.+?) dienen: Der . als "beliebiges Zeichen" + für ein oder mehr Vorkommen dieses Zeichens (alternativ * wenn da auch gar kein Zeichen kommt) und ? für minimales Matching. Letzteres ist erforderlich, da ja mehrere Kommentarfolgen vorkommen, und nur genau diese und nicht der richtige Text zwischen zwei Kommentaren erschlagen wird. Vollständig: /<!--(.+?)-->/ @Carnie: Dein Ausdruck würde allenfalls Kommentare aus beliebig vielen Minuszeichen erschlagen;) Zitieren
Carnie Geschrieben 31. Januar 2006 Geschrieben 31. Januar 2006 ups stimmt...bin ich wohl doch ein wenig eingerostet was reguläre Ausdrücke angeht Zitieren
Markus.K Geschrieben 31. Januar 2006 Geschrieben 31. Januar 2006 Für Einsteiger: http://www.linuxfibel.de/regex.htm und dann mal Google anschmeißen, was es sonst so gibt. Wer alles rausholen will, und sich auch auf abstrakterer theoretischer Ebene mit der Materie beschäftigen will: ISBN 3897213494 (leider nicht ganz billig für ein rel. dünnes Büchlein) Zitieren
oneside Geschrieben 31. Januar 2006 Autor Geschrieben 31. Januar 2006 Also wenn ich folgendes ausführe: $var = ereg_replace("/<!--(.+?)-->/","",$var); dann ist der gesamte Text aus $var weg und nicht nur die Kommentare: Also wenn $var folgenden Inhalt hat: "Dies ist ein Text der viel aussagen kann <!--Kommentar zu diesem Text-->" Dann bleibt nach dem preg_replace nix mehr übrig :-( ??? Zitieren
Markus.K Geschrieben 31. Januar 2006 Geschrieben 31. Januar 2006 ???Äääähmjaaaa... wird vermutlich daran liegen, dass ich nur mit perl-kompatiblen ("Standard"!) RegExen agiere. ereg_replace scheint da nach einem oberflächlichen Blick ins Manual etwas anders zu ticken... Einen Versuch hab ich aber noch... ereg_replace Tipp: Die Funktion preg_replace(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg_replace(). Ich hoffe mal, beim Aufruf bist du nicht auf ereg_replace eingeschränkt. Zitieren
oneside Geschrieben 31. Januar 2006 Autor Geschrieben 31. Januar 2006 Ja, mit preg_replace() hats gefuntzt ... Du bist mein Held des Tages... DANKE....! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.