Vergleichssyntax für reguläre AusdrückePhp

PHP-Programmierer chatten hier
Anonymous
 Vergleichssyntax für reguläre Ausdrücke

Post by Anonymous »

Ich muss jede Instanz eines Textes in eckigen Klammern durch etwas anderes ersetzen, wobei jeder eckige Klammerblock separat behandelt wird. Beginnen Sie beispielsweise mit:

Code: Select all

[quote author=joe link=topic=765.msg4476#msg4476 date=1330380346] This is the quoted text [/quote] This is the new post
wird umgewandelt in:

Code: Select all

** This is the quoted text ** This is the new post
Ich habe Folgendes versucht:

Code: Select all

preg_replace('/\[.*\]/', '**', $msgtext);
Was ich bekomme ist:

Code: Select all

** This is the new post
Es scheint vom ersten „[“-Zeichen bis zum letzten „]“-Zeichen in der gesamten Zeichenfolge übereinzustimmen, auch wenn der größere Text eine Reihe separater Blöcke mit eckigen Klammern enthält. Wie ändere ich meine Regex, um jeden Block zwischen den eckigen Klammern einzeln zu ersetzen? Offensichtlich stimmt mein .* in der Regex mit allem überein, einschließlich der rechten Klammern bis zur letzten, aber ich möchte, dass es bei der ersten rechten Klammer stoppt, auf die es trifft, und diese Logik dann im gesamten String wiederholt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post