Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Reguläre Ausdrücke: u.a. "Gleiches" ausdrücken

  Alt 8. Sep 2006, 10:51
Hi,

Es geht um reguläre Ausdrücke mit PHP, doch ich denke, dass müsste ja überall ähnlich sein. Ich möchte mittels regulärem Ausdruck BBCodes aus einem Text entfernen. Die BBCodes können so aufgebaut sein
  • [x]...[/x]
  • [x=...]...[/x]
  • [x="..."]...[/x]

Mit diesem regulären Ausdruck (besser habe ich es nicht hinbekommen ) wollte ich diese BBCodes entfernen:

Code:
$text = preg_replace("/\[(.*?)\](.*?)\[\/(.*?)\]/", '\\2', $text);
Man sieht gleich, dass diese Lösung sehr schlecht ist. Ich sehe 2 Nachteile darin:
  1. Wenn beim ersten (.*?) etwas anderes steht, als beim 2., dann würde das mit ersetzt werden. Solche verschachtelungen würden also nicht korrekt behandelt werden:

    Code:
    [b][i]Hallo[/i][/b]
    Ok, hierbei ginge es zufälligerweise, doch wird eben das [ b ] mit dem [ /i ] abgearbeitet und danach das [ i ] mit dem [ /b ]. Kann man überhaut so eine Gleichheit mit regulären Ausdrücken behandeln?
  2. Ich erhalte hinterher 3 Variablen (\\1, \\2 und \\3), aber ich benötige nur \\2. Man kann Parameter irgendwie vom Ergebnis "ausschließen", soweit ich mich erinnere, doch weiß ich nicht wie.

Optional müsste ich auch dieser [x=...] bzw. das [x="..."] behandeln.
Kennt sich da von euch jemand aus und kann mir da ein wenig helfen?
  Mit Zitat antworten Zitat