php preg_replace € - Zeichen mit "euro"
Ich würde gerne ersetzen die € - Zeichen in $XML_COMMENT mit "Euro" vor dem hinzufügen einer xml-Datei.
Dem € - Zeichen nicht als utf-8-Zeichen, die ich bekomme und die Fehlermeldung von simplexml
Warning: SimpleXMLElement::addAttribute(): string is not in UTF-8 in ...
Warning: SimpleXMLElement::asXML(): output conversion failed due to conv error, bytes 0x82 0x26 0x61 0x6D in ....
Das euro-Zeichen erscheint in der MySQL (utf-8) Datenbank 'â‚
Aber korrekt in das textarea-Komponente auf der Webseite.
Ich habe versucht, diese verschiedenen str_replace
$XML_COMMENT=str_replace('€','euros',$XML_COMMENT)
$XML_COMMENT=str_replace('€','euros',$XML_COMMENT)
$XML_COMMENT=str_replace(chr(128),'euros',$XML_COMMENT)
$XML_COMMENT=str_replace(chr(0xE2).chr(0×82).chr(0xAC),'euros',$XML_COMMENT)
$XML_COMMENT=str_replace(chr(0x82).chr(0x26).chr(0x61).chr(0x6D),'euros',$XML_COMMENT)
ohne Erfolg
FYI: ich bin mit utf-8 überall (MySQL, Web-Seiten und XML)
Hier ist mein code
//? : $XML_COMMENT= "bla bla bla € bla bla bla";
//? : $XML_COMMENT= "bla bla bla € bla bla bla";
//expected : $XML_COMMENT= "bla bla bla euros bla bla bla";
$ProductLog_XML = simplexml_load_file($file);
$ProductUpdate = $ProductLog_XML->order->product->addChild('update');
$ProductUpdate->addAttribute('comment',$XML_COMMENT);
$fp=fopen(file, "w");
fwrite($fp, $ProductLog_XML->asXML());
fclose($fp);
Gibt es irgendeine alternative mit regex /preg_replace ?
I'm using utf-8 everywhere.
Nein bist du nicht. Die meisten wahrscheinlich, dass dein editor falsch konfiguriert und verwendet eine andere Codierung.- ich habe es mit utf-8 ja, es dosent Arbeit mit utf-8-Codierung, wo, als, wenn ich entfernt den meta-tag angegeben meine charset-es funktioniert!!!!! ---- Nicht verstehen 🙁 was Los ist, welche Art von Charakter ist es?
- was macht Sie sagen, dass? Ich glaube nicht, dass der editor hat nichts mit meinem problem zu tun, da $XML_COMMENT kommt aus einer utf-8 MySQL-Tabelle, gespeist von einer utf-8 Webseite.
- Die Fehlermeldung ist
string is not in UTF-8
. Also, ich denke, es ist eine sichere Annahme, dass eine Zeichenkette nicht in UTF-8.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen
htmlentities()
zu konvertieren alle Elemente, darunter auch das euro-Symbol, so erscheinen Sie wie€
.Ich würde es verwenden, in der folgenden Weise:
htmlentities($str, ENT_QUOTES|"ENT_HTML401", "UTF-8", true)
Können Sie wählen, zu verwenden:
htmlentities($XML_COMMENT, ENT_QUOTES | ENT_IGNORE, "UTF-8", true)
. Für eine vollständige Erklärung, was die Flaggen ändern, besuchen Sie den link unten.Auf Anfrage von OP @baptme (siehe Kommentare).
Quelle: php.net Referenz
Ich hatte das gleiche problem und folgende Werke für mich, wo die ursprüngliche HTML-Seite ist in UTF-8 und mit &euro, die nach der cURL-ing mit PHP spuckt als "â‚"