myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   php, DOMDocument, utf-8 und umlaute (https://mygully.com/showthread.php?t=2354982)

urga 03.07.11 02:30

php, DOMDocument, utf-8 und umlaute
 
nabend,

evntl kann mir jemand helfen:
mein string zur ausgabe kommt aus einer datenbank in utf-8 kodierung. daran kann ich nichts ändern.
auch ein
Code:

header("Content-Type: text/html; charset=utf-8");
wurde bereits gesendet. kann ich auch nicht ändern.
um das problem nachzustellen:
Code:

header("Content-Type: text/html; charset=utf-8");
$html =  utf8_encode ('<div>äöüäöäüö<div>');
echo $html;

funktioniert wie erwartet.
allerdings:
Code:

header("Content-Type: text/html; charset=utf-8");
$html =  utf8_encode ('<div>äöüäöäüö<div>');
$d = new DOMDocument ('2.0', 'UTF-8'); // hier probehalber 2.0, weil 1.0 nicht das gewünschte resultat liefert.
$d->loadHTML ($html);
echo $d->saveHTML();

nicht.

ich brauche DOMDocument um das html umzubauen. und das per str_replace bzw. preg_replace zu machen ist viel zu ineffizient in meinem fall.
jemand eine idee?

Epeos 03.07.11 10:44

Hast du Dir mal die User-Comments zu loadHTML auf php.net angesehn (hier: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]). Die sind voll von Problemen mit UTF-8 und es gibt eine ganze Reihe von Lösungsvorschlägen. Vielleicht löst einer Dein Problem. Aber grundsätzlich macht PHP mit UTF-8 nicht wirklich viel Spaß :(

urga 03.07.11 22:18

jupp. es reicht nicht utf-8 als encoding beim constructor von DOMDocument anzugeben.
loadHTML() will auch noch nen meta haben.
den meta und anderer kram, der von saveHTML() zugefügt wird muss dann noch entfernt werden...

so funzt es: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.