Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] BBCode regulärer ausdruck (https://www.delphipraxis.net/119157-%5Bphp%5D-bbcode-regulaerer-ausdruck.html)

Kalfany 21. Aug 2008 08:54


[PHP] BBCode regulärer ausdruck
 
Morgen,

ich habe eine funktion zum umwandeln von BBCode zu HTML das funktioniert soweit auch. Nur möchte ich jetzt innerhalb eines bestimmten tags (immer [P][/P]) alle \r\n durch
erstezen, aber eben nur innerhalb dieses Tags und nicht in Tags innerhalb von [P][/P] (ich weiß das es nl2br gibt, aber das geht auf alles).

Code:
'/(?<!\\\\)\[p(?::\w+)?\](.*?)\[\/p(?::\w+)?\]/si' => "

\\1</p>"
'/(?<!\\\\)\[b(?::\w+)?\](.*?)\[\/b(?::\w+)?\]/si' => "[b]\\1[/b]"
Nur möchte ich diese erstezung nicht verschachtelt machen also bei diesem beispiel
Code:
[P]Text\r\ntext [B]bold\r\nText[/B] mehr\r\nText[/P]
soll das \r\n nur innerhalb [P][/P] aber nicht innerhalb ['B]['/B] ersetzt werden, richt wäre also:
Code:

Text
text [b]bold\r\nText[/b] mehr
Text</p>
(Was auch gehen würde, erst ein nl2br und dann die "falschen"
wieder raus löschen)

omata 21. Aug 2008 09:02

Re: [PHP] BBCode regulärer ausdruck
 
Tja, da du eigentlich keine Frage gestellt hast. Und deine Problembeschreibung schon die Lösung enthält, frage ich mich: was willst du von uns?

Kalfany 21. Aug 2008 09:06

Re: [PHP] BBCode regulärer ausdruck
 
wo wären denn die lösung? :D

mein problem ist einfach das ich die verschachtelung mit ausschluss nicht hinbekomme, bzw. weiß ich nicht wie man etwas rauslöscht (bei den BBCode sachen wird ja nur was ersetzt)

zumal sich bei dem weg mit erst nl2br, noch ein anderes problem entsteht denn dann können die
auch ausserhalb von [P][/P] sein

Code:
[H1]Überschrift[/H1]

[P]Test
text [B]fett
text[/B] text[/P]
müsste zu diesem werden

Code:
[H1]Überschrift[/H1][P]Test
text [B]fett text[/B] text[/P]

omata 21. Aug 2008 11:45

Re: [PHP] BBCode regulärer ausdruck
 
dann eben nicht...

Kalfany 25. Aug 2008 07:34

Re: [PHP] BBCode regulärer ausdruck
 
Zitat:

Zitat von omata
dann eben nicht...

??????????


ich habe mich momentan das ganze per CSS "behoben" aber eine lösung auf dauer ist das nicht

angos 25. Aug 2008 08:02

Re: [PHP] BBCode regulärer ausdruck
 
Hi,


wenn ich dich richtig verstehe, baue dir doch einfach eine funktion, wo du den nächsten BB-Tag raussuchst, und dann den Text zwischen diesem Tag und dem nächsten je nachdem auswertest.

Du weisst dann ja auch immer, was dein aktueller BB-Tag ist. Dürfte dann nicht so schwer werden.

Gruß
Ansgar

Matze 25. Aug 2008 08:13

Re: [PHP] BBCode regulärer ausdruck
 
Moin,

in solchen Fällen schaue ich immer gerne bei PEAR vorbei: HTML_BBCodeParser.

Zitat:

This is a parser to replace UBB style tags with their html equivalents.
It does not simply do some regex calls, but is complete stack based parse engine. This ensures that all tags are properly nested, if not, extra tags are added to maintain the nesting. This parser should only produce xhtml 1.0 compliant code. All tags are validated and so are all their attributes. It should be easy to extend this parser with your own tags.
Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz