Veröffentlicht 1. März 200520 j Hi, habe eine Frage zu Regulären Ausdrücken. Benutze die Funktion preg_replace und möchte damit Textauschnitte ersetzen. <MEIN_TAG> <tr><td>{*MEIN_TAG*}</td></tr> <tr><td>Noch ein Block.</td></tr> </MEIN_TAG> Versuche den Auschnitt <MEIN_TAG>...</MEIN_TAG> inklusive der Tags ersetzen. Hatte mir das so vorgestellt preg_replace( "/<" . $tag . ">(.*)<\/" . $tag . ">/", ..., ...); Wäre echt nett wenn mir mal einer einen Tipp geben könnte. Gruß Andreas
1. März 200520 j preg_replace( "@<" . $tag . ">(.*)</" . $tag . ">@", "", $string); ungetestet! Gruß, Markus
1. März 200520 j Solange sich dein Tag nicht über mehrere Zeilen erstreckt sollte die Lösung von kills funktionieren, was auch immer diese @ da sollen (kann sein, dass kills da mehr weiss als ich). Es könnte evtl. an einer Stelle stress geben, da / eigentlich die "Einleitung" eines Modifikators sind. Solltest das / durch ein \ escapen, dann sollte es gehen, wobei ich, falls es ein pseudo-Tag in solch einem Format <...> wird, von dieser Nutzung abraten. HTML/XML halt
1. März 200520 j Also erstmal dankeschön für Eure Antwort, habe den Vorschlag von kills mal ausprobiert und er hat leider nicht das gewünschte Ergebnis gebracht. Habe Ihn so eingebaut preg_replace( "@<" . $tag . ">(.*)<\/" . $tag . ">@", "", $string); Habe danach noch ein Paar eigene Versuche gestartet und bin auf folgenden Ausdruck gestoßen: preg_replace("/<" . $tag . ">([[:print:]|[:cntrl:]]*)<\/" . $tag . ">/", ..., ...); Der hat mir das gewünschte Ergebnis geliefert. [:print:] -> Jedes Druckbare Zeichen inklusiver Leerzeichen [:cntrl:] -> Steuerzeichen [[:print:]|[cntrl]]* beliebig viele oder kein [ Druckbares Zeichen oder Steuerzeichen ] Hoffe das meine Interpretaion dieses Ausdruckes soweit korrekt ist? Wenn noch jemand eine elegante oder korrekte Lösung hat - nur her damit;) Gruß Andreas
1. März 200520 j Hoppla, habe gerade gesehen, daß das Oder [...|...] überhaupt nicht notwendig ist und in diesem Ausdruck auch gar kein Oder ist. Gruß Andreas
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.