Encoding-Problem

Hallo Leute!

Ich habe hier zwei Strings. Im einen sind die HTML-Umlaute dezimal
kodiert (also z.B. Ä für Ä). Im anderen sind die Umlaute
„normal“ also z.B. Ä. Jetzt sollen beide Strings verglichen
werden. Wie schaffe ich, dass beide Strings gleich codiert sind? Mit
normalen html_entity_decode klappt es nicht!

Vielen Dank schon mal!

Gruß

Edi

OK Lösung gefunden…
Wen es interessiert hab gerade entsprechende Funktion geschrieben:

function decodeDecimalHTML($string){
$pos=strpos ($string, „“);
while (!($pos === false)){
$posend =strpos ($string, „;“, $pos);
$c = substr ($string, $pos+2, $posend-$pos);
$repl = chr($c);
echo "
repl:".$repl;
$string = substr ($string, 0, $pos).$repl.substr($string,
$posend+1);
$pos=strpos ($string, „“);
$i++;
}
return $string;
}

Gruß

Edi

Hallo Edi !

Wen es interessiert hab gerade entsprechende Funktion
geschrieben:

Hättest mal im Originalbeitrag schreiben sollen, das nur die …; ersetzen willst, das geht einfacher (irgendwie wusste ich da nicht, was du eigentlich wolltest):

$string = preg\_replace("/([0-9]+);/e","chr('\\1')", $string)

Analog für …; (Hexadezimal):

$string = preg\_replace("/([0-9A-Z]+);/ie","chr(hexdec('\\1'))", $string)

Alexander

1 Like

Hi Alex!

Deine Lösung ist natürlich tausend mal eleganter und wurde von mir
soeben übernommen ; )

Vielen Dank!

Gruß

Edi

Hi Alex!

Deine Lösung ist natürlich tausend mal eleganter und wurde von
mir
soeben übernommen ; )

Bei den Hexadezimal-Code fehlt & # x , auch im regulären Ausdruck, scheint das Forum zu filtern :frowning:

Alexander