telofon: kleiner Parser, Bewertung

Beitrag lesen

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