eisbaer04: Reguläre Ausdrücke

Beitrag lesen

Hallo du da draußen,

Hi,

$value = preg_replace("/(<table[^>]*>).*(</table>)/", "\1\2", $value);

wenn mich nicht alles täuscht, dann muss es \1\2 heißen - aber da hilft jetzt nur testen!

Jetzt fällt mir aber doch glatt was auf: Meine Lösung stimmt auch noch nicht ganz: Sind mehrere Table-Konstrukte in $value, löscht er den String vom allerersten <table>-Tag bis zum allerletzten </table>-Tag und nicht das zwischen den Table-Tags... Hat jemand eine Idee, wie man das korrigieren könnte? (Mit regulären Ausdrücken, ohne wäre es halt kompliziert...)

Dazu musst du den *-Operator ungierig machen. Das machst du, in dem du ein ? hinten ran stellst, also: "*?".
Alles in allem sollte der Ausdrück dann so aussehen:

$value = preg_replace("/(<table[^>]*>).*?(</table>)/", "\1\2", $value);

Aber da ich das nicht testen kann, musst du das wohl übernehmen!

Thats all Folks
 eb4