2010-06-28 3 views
0

У меня возникла проблема с кодировкой из фида Wordpress, который я просто не могу понять.PHP DomDocument, проблема с кодировкой DomXPath

Я загружал свой канал с помощью DOMDocument-> load, но потом сделал file_get_contents и теперь использую -> XMLload с теми же результатами. Я сделал XMLload, чтобы я мог манипулировать фидом, если это необходимо.

Правильный результат, который я ищу, это - ‘ £. Если я просто эхо из запроса Xpath, я получаю - ‘ £. Если я эхо с utf8_decode, я получаю - ? £. Гораздо лучше, но вопросительный знак должен быть апострофом.

Если я прохожу через каждый узел DomDocument, когда он загружен, я получаю правильный вывод. Похоже, что это неправильно обрабатывается в XPath.

Любые мысли?

корм http://shredeasy.com/blog/category/news/feed

Вот функция, которая вызывается:

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"]); 

Я пытался выяснить это в течение нескольких часов, и я продолжаю кружить назад неправильные вещи.

Спасибо за помощь!

Вы знаете, что кажется, что апострофы превращаются в вопросительные знаки ... Гоша! Я не знаю, является ли это единственной проблемой или нет.

+1

Что такое кодировка * вашей страницы *? server/meta element ... –

+0

ответ

1

Строка, эхо-эхо, кодируется в UTF-8.

  • Если страница была закодирована в UTF-8, вы можете просто повторить его, возможно, вызывая htmlspecialchars с третьим аргументом, равным «UTF-8».
  • В противном случае вам необходимо его предварительно преобразовать до любой кодировки вашей веб-страницы. См. iconv и mb_convert_encoding.
+0

Я хотел ответить на это, но htmlspecialchars с UTF-8 как аргумент был ответом. –

Смежные вопросы