BB-Codes

Kategorien: PHP & MySQL
8 Antworten
unkie
unkie am Mittwoch, 22. Juni 2005 um 15:50
Also ich habe ja, wie ihr wisst, ein News-System geschrieben. Das Tut ist dreck (ja EaStErDoM hast ja recht) und ich werde es bald neu schreiben. Aber erst wenn ich Zeit + Lust dazu habe. Jetzt will ich erstmal das alte News-System verbessern. Bin bei 25% mache atm. BB-Codes. (Smilies sind schon da). Also ich habe ja schon einen Code-Tag drin, aber in dem werden BB-Codes usw. leider noch verarbeitet. Wie schaffe ich es, dass diese nicht mehr ausgeführt werden? Das einfach der reine HTML-Code dort steht. Zudem werden dort die "<>" als > und < angezeigt, da ja leider htmlentities an ist. Würde ich jetzt einen extra Replace machen würden aber alle "<>" ersetzt werden. Das will ich ja nicht, weil sonst auch die <> in dem für die BB-Codes eingefügten HTML-Codes ersetzt werden und so das HTML nicht mehr ausgeführt wird! Naja auch plane ich einen "php"-Tag mit Farbiger-Syntax-Dastellung (Danke an EaStErDoM für das nice Tut ;) ) Aber leider ist das recht schwer. atm mache ich es mit $ t e x t = p r e g _ r e p l a c e ( &#039; / [ p h p ] ( . * ? ) [ / p h p ] / i s e &#039; , &#039; h i g h l i g h t _ s t r i n g ( &#039; $ 1 &#039; ) &#039; , $ t e x t ) ; (macht die Spaces weg, habe sie gemacht, damit kein error kommt ;)) Aber leider wird dort auch "<>" durch &get; und < ersetzt! Das will ich aber nicht :-/ Der soll ja den Code ausgeben. Tut der auch so halb, aber leider auch noch über dem Ort wo es stehen sollte. Wenn ihr nicht versteht was ich meine lade ich nache einen Screen hoch. Meine Frage ist jetzt: Wie kann ich den BB-Code richtig bauen? Wäre es vllt mit einer anderen fuktion besser? Dachte vllt ab "p r e g _ r e p l a c e _ c a l l b a c k"! Hoffe mal ihr könnt mir helfen. Aber bitte keine Vermutungen ;) [b]Wer Fehler sucht ist selber schuld wenn er welche findet[/b]

Kommentare

Markus René Einicher
Markus René Einicher am Mittwoch, 22. Juni 2005 um 18:02

(ja EaStErDoM hast ja recht)
LAL ich krieg schon Widmungen :P

Willst du unbedingt eine eigene Funktion schreiben? Dann helf ich dir natürlich, dann hab ich noch ein paar Fragen.

Andernfalls, wenn du eh ein neues News-System machst könntest meinen Cepra benutzen, da wäre das alles dabei, sogar CrossBrowserJavaScript zum ins-textfeld-einfügen, denn genau damit man solche lästigen sachen nicht selber machen muss, hab ich den cepra entwickelt.

Da hast dann ein fertiges BasisSystem und musst nur mehr dein Skript integrieren, was ziemlich einfach geht, weil das sein Sinn ist.

unkie
unkie am Mittwoch, 22. Juni 2005 um 18:14

Und muss dein Copy beachten ;) Ne danke aber für das angebot. Außerdem will ich es selber schaffen damit ich auch was bei lerne ;) Sonst kann ich auch gleich ne Mamob oder PHPNuke installen ;) Auch wenn die besser sein mögen ^^

Wie meinste das mit eigener Funktion? Ich will das über "text_replace" wie in dem News-System atm aufrufen und möglichst nicht mitten drin eine Neue Funktion aufrufen! Sondern alles einfach über diese eine Funktion da machen ;)

Wenn wer eine Idee hat wäre nett die hier zu posten! Habe schon in php-FAQ gelesen aber nichts gefunden weil ich nicht wusste wonach ich wirklich suchen sollte

Markus René Einicher
Markus René Einicher am Mittwoch, 22. Juni 2005 um 18:31

Was meinst mit mein "Copy"? Copyright? Ich habe schon mehrmals gesagt das mein Cepra OpenSource ist, was er auch sein muss, weil er sonst seinen Sinn nicht erfüllen kann.

was ist "ne Mamob" und was "PHPNuke"?
was ist "atm"?

dann das da: Also ich habe ja schon einen Code-Tag drin, aber in dem werden BB-Codes usw. leider noch verarbeitet. Was ist ein Code-Tag? Ich weiß was ein Code ist und was ein Tag ist aber unter beidem kann ich mir nichts vorstellen.

So?: Du hast eine Funktion die BBCode interpretiert, und willst jetzt das sie das nicht mehr tut weil du willst das sie gewöhnliches HTML interpretiert?

Wohl kaum oder?

unkie
unkie am Mittwoch, 22. Juni 2005 um 20:15

Mambo und PHPNuke sind CMSe.
atm = at the moment

Code-Tag: BB-Codes werden auch mit "Tags" geschrieben als z.b. [code ][/code ]

Mein Funktion verändert via str_replace den text von [b ]text[/b ] nach <b>text</b> Das soll der auch weiter machen, es sei denn es wird zwischen 2 [Code ]-Tags ausgeben. Dann sollen BB-Codes nicht mehr ausgeführt werden und einfach der text wie der in der DB steht ausgeben werden.


Edit: Habe mir das mal aus einem PHPBB angesehen und da sind es

Markus René Einicher
Markus René Einicher am Mittwoch, 22. Juni 2005 um 20:59

Ich würd einfach zuallererst die [co de] Tags umwandeln, was dazwischen steht in einem Array zwischenspeichern, nur den [co de] tag stehen lassen und zum schluss eine for schleife durchlaufen lassen die die [co de] tags mit dem zwischengespeicherten ersetzen.

Die komplexere Variante wäre immer preg_replace zu verwenden, und ihn so einzustellen, das er immer nur die äußersten treffer übernimmt, ds würde dann allerdings für alle tags gelten und nciht nur für den [co de] Tag, was wiederum bedeutet, dass die erste variante effizienter wäre.

ANders wäre noch, dass du die Benutzer anweißt BBCode der nicht ausgeführt werden soll mit Rückstrichen zu maskieren und der preg_match dann sagst, sie soll nur auf eckige Klammern reagieren die nicht maskiert wurden, was wiederum bedeutet das du alle preg_replaces umschreiben musst, es wäre also notwendig den benutzer zu informieren und alles umzuschreiben, womit sich wieder variante 1 als am effizientesten herausstellt.

mfg
Aja: Cepra ist mehr als ein einfaches CMS, es sei denn man kann bei den anderen auch Plugin-ähnlich weitere Komponenten hinzuinstallieren.

Markus René Einicher
Markus René Einicher am Mittwoch, 22. Juni 2005 um 21:24

Boa, he der hat nur den Anfang und den Endtag ersetzt, der sucht gar keine Vollständigen übereinstimmungen! pfui.

unkie
unkie am Freitag, 24. Juni 2005 um 20:32

Also habe es jetzt zu 20% gepackt ^^
wird zwar nicht ganz so schön angezeigt wie normal aber was solls ...
naja das einzige prob ist atm noch, dass der Text nur bei ~10 mal in 'Farbe' angezeigt wird :-/
Das ist recht schei*e ...

unkie
unkie am Freitag, 24. Juni 2005 um 22:02

so habe es gepackt ;)
wunderbar ^^
habe auch noch zwei andere code drinne ;)
schaut es euch einfach mal an


download.lentfort.com/tutorials/geht_doch.htm

nicht das beste aber ganz nett ;)!
Achja an den sachen mit dem Code bin ich noch immer am verzweifeln ...