Hallo,
ich habe folgenden Quelltext von einem Transaktions-Modul
folgendes Problem:
Ich verstehe hier keine einziges Regex und die Funktion funktioniert nicht richtig. (Ich habe die Funktion nicht geschrieben, es war ein fertiges Modul für xtc)
Der Fehler in der Funktion: Manche Zeichen (z.b. &, !, ", ', <, >, [ und ] bestätigt nur bei &, ob die anderen Fälle auch auftreten können weiß ich nicht) werden nicht gefiltert und durch die entsprechenden XML-Entitys bzw. Hexadecimal-Entitys ersetzt.
Ich wollte hier den einfachsten Weg gehen und einfach 8 str_replace einbauen. Nur wo? Am Anfang? - Dann wird doch das Hex-Entity (z.b. ! für !) auch decodiert???
Am Ende? - Dann geht die Funktion beim 1. return raus und kommt gar nicht mehr zu meinen str_replace...
Ich hoffe, ihr könnt mir helfen.
LG
ich habe folgenden Quelltext von einem Transaktions-Modul
Code:
function xmlentities($string) { /** * Only do the slow convert if there are 8-bit characters * avoid using 0xA0 (\240) in ereg ranges. RH73 does not like that */ if (! ereg("[\200-\237]", $string) and ! ereg("[\241-\377]", $string)){ return $string; } /** * decode three byte unicode characters * @var unknown_type */ $string = preg_replace("/([\340-\357])([\200-\277])([\200-\277])/e", "'&#'.((ord('\\1')-224)*4096 + (ord('\\2')-128)*64 + (ord('\\3')-128)).';'", $string); /** * decode two byte unicode characters * @var unknown_type */ $string = preg_replace("/([\300-\337])([\200-\277])/e", "'&#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'", $string); return $string; }
Ich verstehe hier keine einziges Regex und die Funktion funktioniert nicht richtig. (Ich habe die Funktion nicht geschrieben, es war ein fertiges Modul für xtc)
Der Fehler in der Funktion: Manche Zeichen (z.b. &, !, ", ', <, >, [ und ] bestätigt nur bei &, ob die anderen Fälle auch auftreten können weiß ich nicht) werden nicht gefiltert und durch die entsprechenden XML-Entitys bzw. Hexadecimal-Entitys ersetzt.
Ich wollte hier den einfachsten Weg gehen und einfach 8 str_replace einbauen. Nur wo? Am Anfang? - Dann wird doch das Hex-Entity (z.b. ! für !) auch decodiert???
Am Ende? - Dann geht die Funktion beim 1. return raus und kommt gar nicht mehr zu meinen str_replace...
Ich hoffe, ihr könnt mir helfen.
LG
Kommentar