Similaire à ceci question Je consomme un produit XML qui contient des caractères illégaux. Je doute sérieusement que je puisse les amener à résoudre le problème, mais je vais essayer. En attendant, j'aimerais une solution de rechange.Bullet "•" en XML
Le problème est qu'il contient une balle. Il se traduit par "â € ¢" dans ma source. J'ai essayé quelques conversions d'encodage mais je n'ai pas trouvé de combinaison qui fonctionne. (Je ne suis pas habitué à penser à mon type d'encodage, donc je suis hors de mon élément ici.) Donc, j'ai essayé ci-dessous et il semble que str_replace ne reconnaît pas le "•". (il se transforme en bloc de haut dans mon éditeur de texte) Vous pouvez voir les lignes commentées où j'ai essayé quelques choses différentes.
J'ai essayé str remplacer le « â € ¢ » d'abord, puis peaufiné autour et voici mon dernier:
// deal with bullets in XML.
$bullet="•"; //this was copied and pasted from transliterated text.
//$data=iconv("UTF-8", "windows-1252//TRANSLIT", $data); //transliterate the text:
//$data=str_replace($bullet,'•',$data); // replace the bullet char
$data=str_replace($bullet,' - ',$data); // replace the bullet char
//$data=iconv("windows-1252", "UTF-8", $data); // return the text to utf-8 encoding.
Toute idée comment enlever ou remplacer ce charbon? S'il y a une fonction pour pré-nettoyer le XML, ce serait génial, et je n'aurais pas à m'inquiéter à ce sujet.
Etes-vous sûr qu'il n'y a pas d'autres caractères dans '$ data' qui pourraient causer l'erreur? Que faire si vous essayez de lire le document en utilisant 'DOMDocument :: loadHtml()'? cette méthode est beaucoup plus indulgente si le xml n'est pas valide – hek2mgl
U + 2022 est un [caractère légal en XML] (http://www.w3.org/TR/2000/REC-xml-20001006#charsets). Mais, ce n'est pas valide dans un jeton de nom. Comment est-il utilisé? –
jetez un coup d'œil à [this post] (http://stackoverflow.com/questions/11768839/utf-8-decode-for-php) et [cette ressource, sect. 3] (http://blog.loftdigital.com/blog/php-utf-8-cheatsheet) - ils vous disent comment configurer php pour utiliser l'encodage utf-8 par défaut et comment convertir entre différents encodages si vous avez besoin pour faire cela au cas par cas (mais vous devriez vraiment vous demander _why_ vous devez faire cela). – collapsar