Reguläre Ausdrücke - BBCode
Nino
- php
0 Nino
Hallo liebes Forum,
ich bin leider kein Bisschen bewandert im Bereich Reguläre Ausdrücke und wollte deshalb mal anfragen, ob ihr mir sagen könntet, wie in etwa mein RegEx aufgebaut sein muss, wenn ich folgendes mit PHP realisieren möchte:
Ich habe ein Formular, dass ausgewertet wird. Die Besonderheiten sind folgende:
Ich möchte den Text, der außerhalb von [.*].*[/.*] liegt selektieren. Die BBCodes enthalten Quelltext (HTML, PHP, JavaScript, CSS), der nicht von strip_tags() betroffen sein soll.
Es kann unendlich viele dieser BBCodes geben, die auch immer anders aufgebaut sind (mal, bevor der Text beginnt, mal mitten im Text usw.).
Beispiel:
Lorem <b>ipsum</b> dolor sit amet, <u>consetetur</u> sadipscing [php]<?php echo $data ?>[/php] elitr, sed diam nonumy eirmod tempor [css] #main { width:85%; } [/css] invidunt ut labore et dolore magna aliquyam erat, [php]<?php echo "Hallo Welt!"; ?>[/php] sed diam voluptua.
Soll mir nach der Prüfung etwa folgendes ausgeben:
Lorem ipsum dolor sit amet, consetetur sadipscing [php]<?php echo $data ?>[/php] elitr, sed diam nonumy eirmod tempor [css] #main { width:85%; } [/css] invidunt ut labore et dolore magna aliquyam erat, [php]<?php echo "Hallo Welt!"; ?>[/php] sed diam voluptua.
Veränderung: HTML-Tags in dem Fließtext wurden entfernt, jedoch nicht der Inhalt in den BBCodes.
Durch die Willkürlichen Wiederholungen der BBCodes weiß ich nicht, wie ich meinen Fließtext heraus selektieren soll.
Ich hoffe, ihr versteht mein Problem.
Ich erwarte keine Lösung des Ganzen, nur wäre es super, wenn mir jemand einen Ansatz und eventuell Hilfeseiten im Netz dazu geben könnte.
Liebe Grüße,
Nino
Huhu,
Ich möchte den Text, der außerhalb von [.*].*[/.*] liegt selektieren. Die BBCodes enthalten Quelltext (HTML, PHP, JavaScript, CSS), der nicht von strip_tags() betroffen sein soll.
Es kann unendlich viele dieser BBCodes geben, die auch immer anders aufgebaut sind (mal, bevor der Text beginnt, mal mitten im Text usw.).
Ergänzung:
Anstatt [.*].*[/.*]
wäre wohl [php|javascript|css|html].*[/php|javascript|css|html]
besser, da es auch noch BBCodes wie z.B. [b] gibt, die natürlich auch durch strip_tags() "bereinigt" werden sollen.
------
Nochmal:
Was ich brauche ist der RegEx dafür, um den Fließtext zu selektieren. Das Suchmuster muss aber auf den kompletten POST-String angewendet werden - der komplette Fließtext (es kann beliebig oft BBCode vorhanden sein) muss aber selektiert werden.
Möglich ist das doch, oder?
Liebe Grüße und Danke für jede Hilfe,
Nino