2010-06-28 5 views
0

J'ai un problème avec l'encodage d'un flux wordpress que je n'arrive pas à comprendre.PHP DomDocument, problème d'encodage DomXPath

Je chargeais mon flux avec DOMDocument-> load mais j'ai ensuite fait un fichier_get_contents et j'utilise maintenant -> XMLload avec les mêmes résultats. J'ai fait le XMLload afin que je puisse manipuler le flux si nécessaire.

La sortie correcte que je recherche est - ‘ £. Si je fais juste écho à partir d'une requête Xpath, j'obtiens - ‘ £. Si je fais écho avec utf8_decode, j'obtiens - ? £. Beaucoup mieux mais le point d'interrogation devrait être une apostrophe.

Si je parcourt chaque nœud de DomDocument lorsqu'il est chargé, la sortie est correcte. Il semble donc que ce soit mal géré dans XPath.

Une idée?

L'alimentation est http://shredeasy.com/blog/category/news/feed

Voici la fonction qui est appelée:

function getPostsInCategory($feed=NULL){ 
    if(is_null($feed)){ echo "Wrong Usage. Need a valid Category Feed. Most likely from getCategories()."; return false; } 
    $feedx = file_get_contents($feed); 
    $xml = new DOMDocument(); 
    $xml->loadXML($feedx); 
    //$this->showDOMNode($xml); 


    //$xml->load($feed); 
    $xpath = new DomXPath($xml); 
    $xpath->registerNamespace("content", "http://web.resource.org/rss/1.0/modules/content/"); 

    $cat = array(); 
    foreach($xml->getElementsByTagName('item') as $c){ 
     $elements = array(); 
     $elements["title"] = $xpath->query("title", $c)->item(0)->nodeValue; 
     echo utf8_decode($elements["title"]); 

J'ai essayé de comprendre cela pendant des heures et je continue encerclant revenir à la mauvaise chose.

Merci pour l'aide!

Vous savez bien, il semble que les apostrophes se transforment en points d'interrogation .... Gosh! Je ne sais pas si c'est le seul problème ou non.

+1

Quel est le codage de * votre page *? serveur/méta-élément ... –

+0

Répondre

1

La chaîne en écho est codée en UTF-8.

  • Si votre page a été encodé en UTF-8, vous pouvez simplement l'écho, peut-être appeler htmlspecialchars avec le troisième argument défini sur "UTF-8".
  • Dans le cas contraire, vous devez le convertir avant le codage de votre page Web. Voir iconv et mb_convert_encoding.
+0

Je voulais répondre à cela, mais htmlspecialchars avec UTF-8 comme un l'argument était la réponse. –

Questions connexes