Hatte mal in einem anderem Forum ein Tutorial gepostet:
Tutorial
Quote:Hallo,
ich habe einmal eine eigene BBCode klasse geschrieben! Sie ist noch nicht ganz ausgereift aber hier ist sie!
Diese hab ich mal für mein (noch nicht fertiges) selbstgeschriebenes Forum gebaucht!
PHP Code:<?php Fett
* [i][/i] => Kursiv
* [u][/u] => Underline
*/
class BBCode
{
// Arrays setzen
private $bbcode = array();
private $html = array();
function __construct()
{
// Definiere BBCodes
$this->fett();
$this->kursiv();
$this->underline();
}
private function fett()
{
// Von [b] in HTML
$this->bbcode["b"] = "/[b](.*?)[/b]/";
$this->html["b"] = "<b>$1</b>";
}
private function kursiv()
{
// Von [i] in HTML
$this->bbcode["i"] = "/[i](.*?)[/i]/";
$this->html["i"] = "<i>$1</i>";
}
private function underline()
{
// Von [u] in HTML
$this->bbcode["u"] = "/[u](.*?)[/u]/";
$this->html["u"] = "<u>$1</u>";
}
public function encode($string)
{
// Umwandeln
$out = NULL;
$out .= preg_replace($this->bbcode, $this->html, $string);
return $out;
}
}
$bbcode = new BBCode;
echo $bbcode->encode("[b]FETT[/b][i]KURSIV[/i][u]UNTERSTRICHEN[/u]");
?>
Um mehrere Codes reintun zu können, müssen Sie eine neue Funktion machen! Danach muss man nur in der array $this->html und in $this->bbcode die ersetzung reintun! Und im Konstructor muss die Funktion angegeben werden.
z.B.
PHP Code:function __construct()
{
// Definiere BBCodes
[...(Bisherige Codes)]
$this->url()
}
private function url()
{
// Von [url] in HTML
$this->bbcode["url"] = "/[url](.*?)[/url]/";
$this->html["url"] = "<a href="$1\">$1</a>";
$this->bbcode["urltwo"] = "/[url=(.*?)](.*?)[/url]/";
$this->html["urltwo"] = "<a href="$1\">$2</a>";
}
Und schon wird es bei
mit encodet!Code:$KLASSENNAME->encode($string);
MfG milos
✝ RiP ✝
Weiter geht's