Hallo und guten Morgen,
ich habe gerade die erste Vorabversion meines Text-zu-HTML-Parser fertiggestellt. Wie neulich in einem Thread von mir (weiter unten) angesprochen, habe ich folgende Syntax gewählt:
[1=...] bis [4=...] => Überschriften
[link=...] und [link=...@titel=...] => Hyperlinks einfach/komplex
[liste=...,...] => Aufzählungsliste, eine Ebene
[nliste=...,...] => Nummerierte Liste, eine Ebene
[f=...], [k=...] und [u=...] => Fett, Kursiv und unterstrichen
Erst mal meine Frage: Was haltet ihr von dieser Logik? Ist sie einprägsam, einfach zu lesen und zu erlernen? Gibt es Ecken, an denen man noch etwas verbessern kann?
Und zum dieser Code:
function getHTML($text)
{
$ret=$text; unset($text);
//[2=...] => <h2>...</h2> usw.
$ret=preg_replace("~\[([0-4])=(.+?)\]~", "\t<span class=\"headline-$1\">$2</span><hr><br>\n\n", $ret);
//Überschriften für das Inhaltsverzeichnis herausexportieren
preg_match_all("~\[([0-4])=(.+?)\]~", $ret, $this->hl_matches);
//[f=...] => Fett / [k=...] => Kursiv / [u=...] => Unterstrichen
$ret=preg_replace("~\[f=(.+?)\]~", "\t<span style=\"font-weight:bold;\">$1</span>", $ret);
$ret=preg_replace("~\[k=(.+?)\]~", "\t<span style=\"font-style:italic;\">$1</span>", $ret);
$ret=preg_replace("~\[u=(.+?)\]~", "\t<span style=\"text-decoration:underline;\">$1</span>", $ret);
//[liste=..., ...] => Aufzählungsliste
preg_match_all("~\[liste=(.+?)\]~", $ret, $list);
$list=explode(",", $list[1][0]);
$list_text="\t<ul>\n";
foreach($list as $l)
$list_text.="\t\t<li>".$l."</li>\n";
$list_text.="\t</ul>";
$ret=preg_replace("~\[liste=(.+?)\]~", $list_text, $ret);
//[nliste=..., ...] => Nummerierte Liste
preg_match_all("~\[nliste=(.+?)\]~", $ret, $list);
$list=explode(",", $list[1][0]);
$list_text="\t<ol>\n";
foreach($list as $l)
$list_text.="\t\t<li>".$l."</li>\n";
$list_text.="\t</ol>";
$ret=preg_replace("~\[nliste=(.+?)\]~", $list_text, $ret);
//[link=...@title=...] => URL komplex
$ret=preg_replace("~\[link=(.+?)@titel=(.+?)\]~", "<a href=\"$1\">$2</a>", $ret);
//[link=...] => URL einfach
$ret=preg_replace("~\[link=(.+?)\]~", "<a href=\"$1\">$1</a>", $ret);
return $ret;
}
Ist der Code sehr serverlastig? Voraussichtlich werden viele Benutzer (ich habe leider keine genauen Angaben, denke aber keinesfalls mehr als 10 pro Minute) den Code ausführen.
Und zum Programierstil: Gibt es eine elegantere Lösung als diese foreach-Schleifen bei den Listen?
Gruß
telofon