BBCodes+Editor

Hallo,
ich suche für meine Seite einen Editor damit man Beiträge schreiben kann. Der muss aber BBCodes unterstützten.
Dabei brauch ich auch gleich neue BBCode-Funktionen. Die, die ich habe sind nicht sehr zuverlässig. 2 mal der selbe Tag in eine Zeile und schon stimmts nicht mehr. Ein extra Parser wäre auch gut.
Am besten ists natürlich zusammen BBCode Parser+Editor, dann ists aufeinander abgestimmt.

Grüße
Flocke

Also einen Blog zu erstellen ist schonmal nicht so schwer.
Meinen BBCode habe ich mir kompülett selbst aufgebaut.
Ich habe hier einmal meine Version des BBCodes angehängt.[attachment=0]bb.7z[/attachment]
Diesen in das Rootverzeichnis deiner Webpage extrahieren, da ich die links zu den Gifs usw. mit ./bb/icons/icon.iwas gelegt hab.
Vor dem Speichern des Strings als erstes $DerString=BB_encrypt($DerString); drüberlaufen lassen.
Vor der Ausgabe des Strings dann $DerString=BB_decrypt($DerString) .
Die mybb.php muss dementsprechend per require in die Blog-Seite eingebunden werden.
Und die Icons.php bindest du an der Stelle ein, wo die Icons(zum anklicken) hinsollen(,du musst oben im Javascript den namen des Formulars und des Textarea noch anpassen^^).

Warnung: das von mir erstellte mybb ist nicht das NON-PLUS-ULTRA, sondern eher ein minimum was ich für mein selfmadeforum getippselt hab.

Feel free to customize ist :slight_smile:

Ne, das ist nicht so das was ich möchte, Smileys hab ich ja schon:

[code]function smileys ($inputtext){
$smileys=array(
‚:)‘=>‚smiley.gif‘,
‚:D‘=>‚cheesy.gif‘,
‚;)‘=>‚wink.gif‘,
‚8)‘=>‚cool.gif‘,
‚:(‘=>‚angry.gif‘,
‚:*‘=>‚kiss.gif‘,
‚:x‘=>‚lipsrealed.gif‘,
‚:P‘=>‚tongue.gif‘,
‚:-/‘=>‚undecided.gif‘,
‚:rolleyes:‘=>‚rolleyes.gif‘
);

foreach ($smileys as $key => $value) {
	$inputtext = str_replace($key,'<img src="images/smileys/'. $value.'" alt=" Smiley '.$key.' " width="15" height="15">', $inputtext); 
}
return $inputtext;

}[/code]
Und htmlentities() macht den Rest.
Nur die BBCodes gehen nicht so:

[code]function parse_bbc($code) {
$bb = preg_replace(’/[b](.?)[/b]/Ui’, ‚$1‘, $code);
$bb = preg_replace(’/[i](.
?)[/i]/Ui’, ‚$1‘, $bb);
$bb = preg_replace("/[color=(.)](.)[/color]/Ui", „<span style=„color:\1;“>\2“, $bb);
$bb = preg_replace(’/[img](.?)[/img]/Ui’, ‚'.locale('image').'‘, $bb);
$bb = preg_replace("/[url=(.
)](.*)[/url]/Ui", ‚$2‘, $bb);

$bb = preg_replace('/\n/', "<br>\n", $bb);

return $bb;

}[/code]
Warum ich für die Zeilenumbrüche preg_replace genommen habe frage ich mich auch grad :whata:

vllt solltest du es mal so versuchen:

Wobei ich keine Ahnung habe wo bei dir $1 herkommt.
Man kann es natürlich auch einfach in 2 Schritten machen

$bb = preg_replace('/(.*)\[b\](.*)/', '<b>', $code); $bb = preg_replace('/(.*)\[\/b\](.*)/','</b>', $code);

Für die Richtigkeit der Ausdrücke übernehme ich keine Garantie, aber so sollte es besser sein

Also Variante 2 nicht, sonst kommt auch mal sowas raus:
text der Rest wird auch fett.

Und Variante 1: läuft auch nicht besser.
Das $1 ist die erste Lücke im Regex, deine Anweisung müsste also lauten:

	$bb = preg_replace('/(.*)\[b\](.*)\[\/b\](.*)/', '<b>$2</b>', $code);

Die verschluckt aber wieder was:

[code]test1
[B]test2[/B]
test3test4

test3
test4
[/code]
wird zu:

Uploaded with ImageShack.us

Über Zeilen hinweg und Großbuchstaben fehlen auch noch.

Versuch das mal

Versuch das mal

Geht warum auch immer, wenn man das s noch ergänzt gehts auch über mehrere Zeilen.

Nur die Schriftfarbe macht noch Probleme:

[code]function parse_bbc($code) {
$bb = preg_replace(’_[(b|B)](.?)[/(b|B)]s’, ‘$2’,$code);
$bb = preg_replace(’
[(i|I)](.
?)[/(i|I)]_s’, ‘$2’, $bb);

//Hier:
$bb = preg_replace("_[(color|COLOR)=(#)?([a-fA-F0-9]){3,6}](.*?)[/(color|COLOR)]_s", “<span style=“color:#$3;”>$4-$5-$1-$2-$3”, $bb);

$bb = preg_replace('_\[(img|IMG)\](http://)?(.*)\[/(img|IMG)\]_', '<img src="http://$3" alt="'.locale('image').'">', $bb);
$bb = preg_replace("_\[(img|IMG)=(http://)?(.*)\](.*)\[/(img|IMG)\]_", '<img src="http://$3" alt="$4" title="$4">', $bb);

$bb = preg_replace("_\[(url|URL)=(http://)?(.*)\](.*)\[/(url|URL)\]_", '<a href="http://$3" target="_blank">$4</a>', $bb);
$bb = preg_replace("_\[(url|URL)\](http://)?(.*)\[/(url|URL)\]_", '<a href="http://$3" target="_blank">$3</a>', $bb);

$bb = nl2br($bb, false);

return $bb;

}[/code]
Es kommt immer nur das Zeichen von der Farbe in $3 an.

So gehts :susp:

$bb = preg_replace("_\[(color|COLOR)=(#)?(([a-fA-F0-9]){3}|([a-fA-F0-9]){6})\](.*?)\[/(color|COLOR)\]_s", "<span style=\"color:#$3;\">$6</span>", $bb);
Da brauch ich also noch nen editor, der gut ist, Smileys unterstützt und BB-Code an das PHP-Script übergibt.