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:
In der Datenbank sind folgende Muster gespeichert (ohne Anführungszeichen):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;
}
"\\[\\[([^]^ ]+) ([^]]*)\\]\\]", 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.
http://www.final-frontier.ch - http://www.planeten.ch
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)