BBCode Funktion?

Hallo!

Weiß zufällig irgendwer davon, obs irgendwo eine Version des BBCode-Klassen-Parser-Zeugs fix und fertig als (möglichst nur eine) Funktion in einer Datei gibt?

So nach dem Motto…
$tollertext = make_bbcode($blödertext);
…?

Ich stell mich beim Versuch, das selbst soweit zu vereinfachen grad arg stümperhaft an (um genau zu sein hab ich’s inzwischen soweit reduziert, dass es kaputt ist) - wär also nett, wenn mir jemand auf die Sprünge hilft :wink:

Hallo,

evtl. hilft Dir diese Funktion weiter.

function ParseFONT($input)
{
$filter=array( ‚/[B]/‘,’/[/B]/’,
‚/[L]/‘,’/[/L]/’,
‚/[S]/‘,’/[/S]/’,
‚/[P]/‘,’/[/P]/’,
‚/[F]/‘,’/[/F]/’,
‚/[BLUE]/‘,’/[/BLUE]/’,
‚/[RED]/‘,’/[/RED]/’,
‚/[GREEN]/‘,’/[/GREEN]/’,
‚/[BLACK]/‘,’/[/BLACK]/’,
‚/[WHITE]/‘,’/[/WHITE]/’,
‚/[HR]/‘,
‚/[BR]/‘,
);
$replace=array( „“,"",
„“,"",
„“,"",
"

","

„,
„“,“",
„“,"",
„“,"",
„“,"",
„“,"",
„“,"",
" ",
"
"
);
return(preg_replace($filter,$replace,$input));
}

MfG

Sven-of-Nine

http://www.Sven-of-Nine.de

Merci!

Hab das zwar inzwischen auch schon so ähnlich gelöst, aber bin nicht auf die die Idee gekommen, arrays zu benutzen.

(das lässt sich dann übrigens beschleunigen, wenn man die arrays nochmals in ähnliche tags unterteilt [die verschiedenen möglichkeiten 'ne url aanzugeben brauchen ja z.B. mindestens 3 replaces] und bei diesen blocks ein "if(substr_count($string, ‚[url‘)>0= voran setzt).

Wenn der Benuzter die schließenden Tags vergisst, dann hast du ein Problem.

Nö… da sieht man überhaupt nix von. Vielleicht denkst du an was anderes - ich ersetz a) kontextsensitiv und b) als minimal-string und nicht als maximalstring. Zudem entferne ich überzählige tags hinterher mit 'nem normalen str_replace. Deswegen hab ich auch die ganzen substr_counts reingemischt; war ziemlich rechenintensiv.

Aber danke für den Hinweis, is bestimmt ein häufiger Fehler.

( hmh… kontextsensitiv… is das das richtige Wort? Hab ich schon jahre lang nimmer gebraucht - egal )

Ich kenn deine Implementierung zwar nicht, wär jedoch an deiner Stelle da vorsichtig. Denn der Kreativität von unterbeschäftigten Kiddies sind (fast) keine Grenzen gesetzt :wink:.
Wenn du einfach bei google mal nach pear bbcode parser suchst findest sehr viel.
=> http://pear.php.net/package/HTML_BBCodeParser
k.A. ob der was taugt, jedoch mit str_replace und count zu arbeiten ist sicher nicht das Beste.

… ähhh … googeling ???

google suche nach „php bbcode“ (http://www.google.at/search?q=php+bbcode)

erster Treffer: http://www.christian-seiler.de/projekte/php/bbcode/

??? war’s das was du gesucht hast ???

Jupp… ich arbeit mit preg_replace (ungready), wobei ich immer schluss/endtag im kontext hab. Das ganze dann rekursiv (mit maximal 3 iterationen) für den fall, dass tags im Tag vorkommen… beim letzten durchgang werden die übrig gebliebenen Tags gelöscht, womit auch keine unsinnigen verschachtelungen möglich sind, deren Ergebnis dann evtl. mit einem Seitensprengenden href=" o.ä. enden könnte.

Ist imho bombensicher. :wink: