Teh H4mst0R
Mitglied
Hallo, ich komm mal gleich zum Punkt:
Ich möchte einen Text, der vorher durch
htmlentities()
umgewandelt wurde nach BBCodes parsen lassen...
Ich verwende dafür reguläre Ausdrücke und es funktioniert auch alles sehr gut bis jetzt...
Nun möchte ich für die Syntax
Den php-Quelltext mittels
highlight_string($text,TRUE)
einfärben lassen, aber dafür muss alles zwischen
wieder umgewandelt werden in Quelltext mit Sonderzeichen...
dafür habe ich vor langer Zeit mal eine Funktion geschrieben, da ich die Texte auch anderweitig immer durch htmlspecialchairs() oder htmlentities() umwandle aber hin und wieder auch mal das Original brauche (ich hoffe ihr könnt noch folgen ^^).
(Für Ausgaben ist es eigentlich immer besser < und > ersetzen zu lassen, für Umlaute siehts da nicht anders aus...)
Die o.g. Funktion hab ich sinnigerweise
htmlentities_rev(string $text)
genannt und diese arbeitet wie schon erwähnt auch zuverlässig (return $text).
Nun zu dem Problem: Ich bekomme den Text fertig durch htmlentities() umgewandelt und möchte nun mit folgendem Code alles zwischen den beiden php-Tags (BBCode) wieder durch meine Funktion zurückwandeln lassen. Das Ergebnis soll dann erstmal so wie es ist in $text zurückgeschrieben werden.
Wegen eregi_replace() brauch ich keine komplizierte Schleife und die funktion get_ex() liefert automatisch das entsprechende Endtag (das _ ist wegen dem bbcode hier im forum)... So wird in der gesammten Text-Variable alles zuverlässig ersetzt.
Eigentliches Problem: Irgendwie wird für htmlentities_rev() als Parameter tatsächlich nur "\\1" übergeben (nix wird umgewandelt) und dann aber trotzdem der Text ersetzt, anstatt "\\1" wie es dann zu erwarten wäre... :suspekt:
(htmlentities_rev() liefert wirklich "\\1" zurück und erst danach wird ersetzt.)
Is es irgendwie möglich als 2. Parameter für eregi_replace() eine Funktion anzugeben, die das zu Ersetzende modifiziert zurückliefert?
Hab schon ne Menge probiert, aber selbst bei verschachtelten Funktionen weigert der sich strikt den Parameter vorher durch ne Funktion zu jagen und dann zu ersetzen..
Bin für jede Anregung dankbar ^^
Ich möchte einen Text, der vorher durch
htmlentities()
umgewandelt wurde nach BBCodes parsen lassen...
Ich verwende dafür reguläre Ausdrücke und es funktioniert auch alles sehr gut bis jetzt...
Nun möchte ich für die Syntax
Code:
[php_]/* code */[/php_]
highlight_string($text,TRUE)
einfärben lassen, aber dafür muss alles zwischen
Code:
[php_]/* code */[/php_]
dafür habe ich vor langer Zeit mal eine Funktion geschrieben, da ich die Texte auch anderweitig immer durch htmlspecialchairs() oder htmlentities() umwandle aber hin und wieder auch mal das Original brauche (ich hoffe ihr könnt noch folgen ^^).
(Für Ausgaben ist es eigentlich immer besser < und > ersetzen zu lassen, für Umlaute siehts da nicht anders aus...)
Die o.g. Funktion hab ich sinnigerweise
htmlentities_rev(string $text)
genannt und diese arbeitet wie schon erwähnt auch zuverlässig (return $text).
Nun zu dem Problem: Ich bekomme den Text fertig durch htmlentities() umgewandelt und möchte nun mit folgendem Code alles zwischen den beiden php-Tags (BBCode) wieder durch meine Funktion zurückwandeln lassen. Das Ergebnis soll dann erstmal so wie es ist in $text zurückgeschrieben werden.
PHP:
$text = eregi_replace(
"\[php\](".get_ex('[/php_]'). ")\[/php\]",
"<blockquote><pre>".
htmlentities_rev("\\1").
"</pre></blockquote>", $text);
Wegen eregi_replace() brauch ich keine komplizierte Schleife und die funktion get_ex() liefert automatisch das entsprechende Endtag (das _ ist wegen dem bbcode hier im forum)... So wird in der gesammten Text-Variable alles zuverlässig ersetzt.
Eigentliches Problem: Irgendwie wird für htmlentities_rev() als Parameter tatsächlich nur "\\1" übergeben (nix wird umgewandelt) und dann aber trotzdem der Text ersetzt, anstatt "\\1" wie es dann zu erwarten wäre... :suspekt:
(htmlentities_rev() liefert wirklich "\\1" zurück und erst danach wird ersetzt.)
Is es irgendwie möglich als 2. Parameter für eregi_replace() eine Funktion anzugeben, die das zu Ersetzende modifiziert zurückliefert?
Hab schon ne Menge probiert, aber selbst bei verschachtelten Funktionen weigert der sich strikt den Parameter vorher durch ne Funktion zu jagen und dann zu ersetzen..
Bin für jede Anregung dankbar ^^