![]() |
Reguläre Ausdrücke: u.a. "Gleiches" ausdrücken
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
Mit diesem regulären Ausdruck (besser habe ich es nicht hinbekommen :oops: ) wollte ich diese BBCodes entfernen:
Code:
Man sieht gleich, dass diese Lösung sehr schlecht ist. Ich sehe 2 Nachteile darin:
$text = preg_replace("/\[(.*?)\](.*?)\[\/(.*?)\]/", '\\2', $text);
Optional müsste ich auch dieser [x=...] bzw. das [x="..."] behandeln. :gruebel: Kennt sich da von euch jemand aus und kann mir da ein wenig helfen? |
Re: Reguläre Ausdrücke: u.a. "Gleiches" ausdrücken
Hallo matze,
letztes Semester hab ich gerlernt, dass die reg. Ausrücke genau die Typ-3 sprachen erkennen, d.h. die Sprachen die durch einen endlichen autoamten erkannt werden. Bei einer folge von [ b][ i] bla [ /i][ /b] was etwa das gleiche wie die Sprache abba (Palindrom) ist braucht man aber schon einen Kellerautomaten. Somit ist die Wahrscheinlichkeit ziemlich gering, dass es dafür eine reg. Expression gibt. Die Rekursivität musst du also selbst behandeln. Edit: reg Ausdr. sind Typ3 Sprachen |
Re: Reguläre Ausdrücke: u.a. "Gleiches" ausdrücken
Hi brechi,
vielen Dank. Dann werde ich wohl alle BBCodes einzelnd durchgehen müssen. |
Re: Reguläre Ausdrücke: u.a. "Gleiches" ausdrücken
Hallo Matze,
leider kenn ich mich in PHP fast überhaupt nicht aus. Bin aber bei der Suche auf folgendes gestossen <?php $zeichenkette = 'Der schnelle braune Fuchs sprang über den faulen Hund.'; $suchmuster[0] = '/schnelle/'; $suchmuster[1] = '/braune/'; $suchmuster[2] = '/Fuchs/'; $ersetzungen[2] = 'Bär'; $ersetzungen[1] = 'schwarze'; $ersetzungen[0] = 'langsame'; echo preg_replace($suchmuster, $ersetzungen, $zeichenkette); ?> der Link zur Seite: ![]() Vielleicht könntest Du vorher die Zeile prüfen welches Suchmuster als erstes im String vorkommt, und alle möglichen Suchmuster in einem Array ablegen. Uwe |
Re: Reguläre Ausdrücke: u.a. "Gleiches" ausdrücken
Hallo Uwe!
Das Beispiel kenne ich, doch wird da eigentlich nichts mit regulären Ausdrücken gemacht, sondern einfach Wörter in einem Array durch Wörter eines anderen ersetzt. Das ist ganz praktisch, wenn man sich beispielsweise einen kleinen Highlighter schreiben will. Doch in meinem Fall hilft mir das leider nicht weiter. Mein Problem ist auch nicht die preg_replace-Funktion, sondern der reguläre Ausdruck, den ich als ersten Parameter übergeben muss. :) Dennoch danke. |
Re: Reguläre Ausdrücke: u.a. "Gleiches" ausdrücken
Wenn du sie nur entfernen und nicht noch weitere Dinge damit tun willst, dann musst du doch das passende schließende Tag überhaupt nicht finden. Wie wäre es so:
Code:
$text = preg_replace("/\[\/?[a-z][^]]*\]/", "", $text);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz