PHP DomDocument, проблема кодирования DomXPath - PullRequest
0 голосов
/ 28 июня 2010

У меня проблема с кодировкой из ленты WordPress, которую я просто не могу понять.

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

Правильный вывод, который я ищу, - - ‘ £.Если я просто повторяю запрос 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 Ответ

1 голос
/ 28 июня 2010

Возвращаемая строка кодируется в UTF-8.

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