XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   BB-Code Funktion? (http://xhtmlforum.de/showthread.php?t=39662)

Hairy 22.04.2006 15:08

BB-Code Funktion?
 
Guten Tag,

ich hätte gerne eine Funktion, mit der ich einen String, der beispielsweise einen Forenbeitrag oder den Inhalt einer per CMS geladenen Seite enthält, "parst". Also HTML rauswirft, BB-Code erkennt und umwandelt etc. und schließlich das Ganze ausgibt.

Ich habe schon danach gegoogelt, und bin auf zwei Scripte gestoßen:

http://software.unclassified.de/abbc <- Das ist im Prinzip genau das, was ich suche. Dummerweise ist es kein valides XHTML und scheidet somit für mich aus.

Besser gefällt mir da schon http://www.christian-seiler.de/projekte/php/bbcode/. Ich habe mir das mal heruntergeladen und etwas damit rumexperimentiert, da ist es zumindest möglich es valide zu machen.
Nur, da ähnlich viele BB-Codes wie beim ersten Link zu implementieren, ist verdammt kompliziert, da man jeden Code einzeln selbst definieren muss. Meine Frage ist nun, ob es nicht irgendwo schon etwas "fertiges" gibt?

Oder kennt vll. noch jemand eine andere Funktion/Klasse ähnlich der ersten hier, die aber gleich in XHTML ist?

sebastianu 22.04.2006 15:27

Für solche Zwecke würde ich nicht BBcode sondern Textile empfehlen.

Hairy 22.04.2006 15:40

Zitat:

Zitat von sebastianu
Für solche Zwecke würde ich nicht BBcode sondern Textile empfehlen.

Danke, aber wie kann ich sowas direkt in mein CMS einbinden? Abgesehen davon wäre mir BB-Code lieber, v.a. auch in einem Forum, da man das dort gewohnt ist.

sebastianu 23.04.2006 09:24

Textile ist einfach einzubinden, da es sich im wesentlichen um eine Funktion handelt, die Textile-Text in HTML umwandelt. Man muss diese Funktion also nur einmal vor der Ausgabe über alle Texte laufen lassen.

Von BBcode halte ich nicht viel und hab mich auch nie damit beschäftigt.

Hairy 23.04.2006 10:16

Zitat:

Zitat von sebastianu
Textile ist einfach einzubinden, da es sich im wesentlichen um eine Funktion handelt, die Textile-Text in HTML umwandelt. Man muss diese Funktion also nur einmal vor der Ausgabe über alle Texte laufen lassen.

Und wo würde ich diese Funktion herbekommen? Hab auf der Seite nichts gefunden... (mal abgesehen davon, dass ich weiterhin BB-Code favoritisiere ;) )

sebastianu 23.04.2006 13:38

http://www.textism.com/tools/textile/license.html

The Doc 23.04.2006 22:53

Oder du nimmst Markdown (ist Textile ähnlich, nur find ichs persönlich besser), am besten noch in verbindung zu Smartypants

Markdown: http://daringfireball.net/projects/markdown/
Smartypants: http://daringfireball.net/projects/smartypants/

PHP-Port: http://www.michelf.com/projects/

Hairy 24.04.2006 19:24

Gefällt mir sehr gut, besonders Markdown... so in der Art stell ich mir das jedenfalls vor.
Aber BB-Code wäre mir trotzdem lieber ;)
So etwas muss es doch irgendwo geben?

Unsk1ll3d 24.04.2006 19:30

Ich könnte dir meinen BBCode-Auszug anbieten. Der sollte eigentlich valide sein...
Die Templates für die Code-Reihe sind auch anpassbar...

Wennde es verwenden kannst is gut, wenn nicht...ignoriers einfach ;)
//edit: Sorry for Spam, aber spoiler gibbet hier nich^^
Zitier am besten den Post, wegen den ganzen in BBCode enthaltenen Tags ^^
PHP-Code:

<?php
function code_tpl($type,$src_code,$desc='')
 {
  
$t_code['type']= "Code:";
  
$t_code['rgb'] = "dda";
  
$t_html['type']= "HTML-Code:";
  
$t_html['rgb'] = "ada";
  
$t_php['type'] = "PHP-Code:";
  
$t_php['rgb']  = "aad";
  
$t_svg['type'] = "SVG-Code:";
  
$t_svg['rgb']  = "dad";
  
$t_xml['type'] = "XML-Code:";
  
$t_xml['rgb']  = "daa";

  
$code_style "
<ul><li style=\"background-color:#{rgb};\">{type}"
;
  if(!empty(
$desc))
  { 
$code_style.="<li style=\"background-color:#{rgb};\">{desc}"; }
  
$code_style.="[*]{code}[/list]";

  
$code=eregi_replace("{type}",${"t_".$type}['type'],$code_style);
  
$code=eregi_replace("{rgb}", ${"t_".$type}['rgb'], $code);
  
$code=eregi_replace("{code}",$src_code,       $code);
  
$code=eregi_replace("{desc}",$desc,           $code);

  return 
$code;
 }

function 
TT_Code($string)
{

 
//  $string = htmlspecialchars($string);

 // [html=Info]HTML Code: Info[/html]
 // [php=Info]PHP Code: Info[/___dummy___php]
 
$string preg_replace("#\[code\](.*)\[\/code\]#Use",     "code_tpl('code',highlight_string(stripslashes('$1'),true))",     $string);
 
$string preg_replace("#\[code=(.*)\](.*)\[\/code\]#Use","code_tpl('code',highlight_string(stripslashes('$2'),true),'$1')",$string);
 
$string preg_replace("#\[html\](.*)\[\/html\]#Use",     "code_tpl('html',highlight_string(stripslashes('$1'),true))",     $string);
 
$string preg_replace("#\[html=(.*)\](.*)\[\/html\]#Use","code_tpl('html',highlight_string(stripslashes('$2'),true),'$1')",$string);
 
$string preg_replace("#\[php\](.*)\[\/php\]#Use",       "code_tpl('php',highlight_string(stripslashes('$1'), true))",     $string);
 
$string preg_replace("#\[php=(.*)\](.*)\[\/php\]#Use",  "code_tpl('php',highlight_string(stripslashes('$2'), true),'$1')",$string);
 
$string preg_replace("#\[svg\](.*)\[\/svg\]#Use",       "code_tpl('svg',highlight_string(stripslashes('$1'), true))",     $string);
 
$string preg_replace("#\[svg=(.*)\](.*)\[\/svg\]#Use",  "code_tpl('svg',highlight_string(stripslashes('$2'), true),'$1')",$string);
 
$string preg_replace("#\[xml\](.*)\[\/xml\]#Use",       "code_tpl('xml',highlight_string(stripslashes('$1'),true))",      $string);
 
$string preg_replace("#\[xml=(.*)\](.*)\[\/xml\]#Use",  "code_tpl('xml',highlight_string(stripslashes('$2'),true),'$1')"$string);

 
// \n durch 
 
ersetzen
 $string 
nl2br($string);
 
// [b]...[/b]
 
$string preg_replace("~\[b\](.*)\[/b\]~Uis","[b]\\1[/b]",$string);
 
// [i]...[/i]
 
$string preg_replace("~\[i\](.*)\[/i\]~Uis","[i]\\1[/i]",$string);
 
// [u]...[/u]
 
$string preg_replace("~\[u\](.*)\[/u\]~Uis","<u>\\1</u>",$string);

 
//[list]...[/list] $string = preg_replace("~\[list\](.*)\[/list\]~Uis","<ul>\\1[/list]",$string);
 // [item]...[/item]
 
$string preg_replace("~\[item\](.*)\[/item\]~Uis","[*]\\1",$string);
 
// [center]...[/center]
 
$string preg_replace("~\[center\](.*)\[/center\]~Uis","<center>\\1</center>",$string);
 
// [div=class_name]...[/div]
 
$string preg_replace("~\[div=(.*)\](.*)\[/div\]~Uis","<div style=\"vertical-align:top\" class=\"\\1\">\\2</div>",$string);
 
// [float=clear]
 
$string preg_replace("~\[float=clear\]~Uis","<br style=\"clear:both\" />",$string);

 
// [img]http://url[/img]
 
$string preg_replace("~\[img\](.*)\[/img\]~Uis","<img src=\"\\1\" border=\"0\" alt=\"\" />",$string);
 
// [img-width]http://url[/img]
 
$string preg_replace("~\[img-(.*){0,3}\](.*)\[/img\]~Uis","<img style=\"width]http://url[/img]
 
$string = preg_replace("~\[img-(.*){0,3}:(.*){0,3}\](.*)\[/img\]~Uis","<img style=\"width:\\1px;height:\\2px\" src=\"\\3\" border=\"0\" alt=\"\" />",$string);
 
// [img=svg]http://url[/img]
 
$string preg_replace("~\[img=svg\](.*)\[/img\]~Uis","<object style=\"border:1px solid #f00;width:100%;height:100%\" data=\"\\1\" type=\"image/svg+xml\" codebase=\"http]http://url[/img]
 
$string = preg_replace("~\[img=svg-(.*){0,3}:(.*){0,3}\](.*)\[/img\]~Uis","<object style=\"border:1px solid #f00;\" width=\"\\1\" height=\"\\2\" data=\"\\3\" type=\"image/svg+xml\" codebase=\"http://www.adobe.com/svg/viewer/install/\"></object>",$string);

 
// [url]http://url[/url]
 
$string preg_replace("~\[url\](.*)\[/url\]~Uis","<a href=\"\\1\">\\1</a>",$string);
 
// [url=http://url]Text[/url]
 
$string preg_replace("~\[url=(.*)\](.*)\[/url\]~Uis","<a href=\"\\1\">\\2</a>",$string);
 
// [pre]Quelltext[/pre]
 
$string preg_replace("~\[pre\](.*)\[/pre\]~Uis","<pre>\\1</pre>",$string);
 
// [abbr=Beschreibung]Kürzel[/abbr]
 
$string preg_replace("~\[abbr=(.*)\](.*)\[/abbr\]~Uis","<abbr title=\"\\1\">\\2</abbr>",$string);

 
// & durch &amp;
 
$string eregi_replace(" & "" &amp; ",$string);
 return 
$string;
}
?>

MfG,
Unsk1ll3d

betrazivis 25.04.2006 11:07

http://pear.php.net/package/HTML_BBCodeParser

http://phpschnipsel.de/index.php?page=details&nr=26


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:25 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023