Hallo zusammen,

Ich versuche, folgendes zu tun: In einer Datenbank sind reguläre Ausdrücke gespeichert, mit denen ein Text bearbeitet werden soll. So soll z.B. [[Link]] in einen Link in HTML-Code umgewandelt werden. Sowohl Regulärer Ausdruck als auch HTML-Ersatz stehen in der Datenbank. Trotzdem funktioniert das offenbar nicht (die Idee dahinter ist natürlich, dass man zu einem späteren Zeitpunkt weitere Ersatz-Muster angeben kann, ohne jedes Mal eine Datei bearbeiten zu müssen).

Erläuterungen zum Code: Die Index-Datei ruft die unten angegebene Funktion auf, bevor der Inhalt (text) ausgegeben wird. Die MySQL-Tabelle besteht aus den Spalten "regex" (1 = ist regex, 0 = ist "normales" replace), "muster", "ersatz" und "rang" (damit die Reihenfolge der Abarbeitung angegeben werden kann).

Der Code:

PHP-Code:
function parser ($text)
{
    
$abfrage mysql_query("SELECT * FROM parser ORDER BY rang ASC",$db);
    while(
$zeile mysql_fetch_array($abfrage))
    {
        if(
$zeile['regex'] == 1)
        {
            
$muster $zeile['muster'];
            
$ersatz $zeile['ersatz'];
            
ereg_replace("$muster","$ersatz",$text);
        }
        else
        {
            
$text str_replace($zeile['muster'],$zeile['ersatz'],$text);
        }
    }    
    return 
$text;

In der Datenbank sind folgende Muster gespeichert (ohne Anführungszeichen):

"\\[\\[([^]^ ]+) ([^]]*)\\]\\]", wird ersetzt durch "<a href=\"?content=\\1\">\\2</a>"

"\\[\\[([^]^ ]+)\\]\\]", wird ersetzt durch "<a href=\"?content=\\1\">\\1</a>" (dies entspricht dem eingangs gegebenen Beispiel).

Wie ihr seht, habe ich bereits versucht, Muster und Ersatz bei der Regex-Anweisung nicht "direkt" aus dem "zeile-Array" zu übertragen. Geholfen hat das allerdings nichts.

Kennt jemand eine Lösung für dieses Problem? Vielen Dank schon mal.