2015-01-07 5 views
0

Я пишу этот RSS-ридер для меня, и это актуальная работа действительно хорошая, но, к сожалению, я не понимаю, как вывод порядка PHP. Может ли кто-нибудь помочь мне с этим?Заказать вывод элементов

Мой код PHP:

$reader = new XMLReader(); 

$reader->open("articles.xml"); 

while ($reader->read()) 
{ 
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "title") 
    echo "<h1>Pøehled aktuálních zpráv ze serveru 
     <a href='" . htmlspecialchars($reader->readString(), ENT_QUOTES) . "'>" . 
     $title . "</a></h1>"; 

    // obsluha názvu kanálu 
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "link") 
    $title = htmlspecialchars($reader->readString()); 

    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "article") 
    { 
    echo "<dl>"; 
    while ($reader->read()) 
    { 

     if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "link") 
       echo "<dt><a href='" . htmlspecialchars($reader->readString(), ENT_QUOTES) . "'>" . 
        $title . "</a></dt>"; 

     if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "title") 
       $title = htmlspecialchars($reader->readString()); 

     if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "description") 
       echo "<dd>" . htmlspecialchars($reader->readString()) . "</dd>"; 

    } 

    echo "</dl>"; 
    } 
} 

Выход этого 1. отобразить эту часть с помощью по алфавиту и только после этого названия его дисплея, который работает в качестве ссылки. Но он должен быть в порядке.

Это, наверное, что-то действительно глупо, но я слишком долго смотрю на этот код и не могу найти проблему.

Я буду очень рад, если кто-то поможет мне в этом. Thanks

+0

Можете ли вы дать мне ссылку на RSS-канал вы использовали? Я попробовал свой блог http://blog.omer.london/feed/, и это результат http://jsfiddle.net/gydeybc6/. Порядок выглядит правильно. Edit: Я понял, что вы сейчас имеете в виду. – oradwell

ответ

1

Операции эха для якорных тегов <a> были неправильными. Я поменял $title на htmlspecialchars($reader->readString(), ENT_QUOTES).

Это должно быть то, что вы хотите:

$reader = new XMLReader(); 
$reader->open("http://blog.omer.london/feed/"); 

$title = ''; 
while ($reader->read()) { 
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "title") { 
     echo "<h1>Pøehled aktuálních zpráv ze serveru 
     <a href='" . $title . "'>" . htmlspecialchars($reader->readString(), ENT_QUOTES) . "</a></h1>"; 
    } 

    // obsluha názvu kanálu 
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "link") { 
     $title = htmlspecialchars($reader->readString()); 
    } elseif ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "article") { 
     echo "<dl>"; 
     while ($reader->read()) { 
      if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "link") { 
       echo "<dt><a href='" . $title . "'>" . htmlspecialchars($reader->readString(), ENT_QUOTES) . "</a></dt>"; 
      } elseif ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "title") { 
       $title = htmlspecialchars($reader->readString()); 
      } elseif ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "description") { 
       echo "<dd>" . htmlspecialchars($reader->readString()) . "</dd>"; 
      } 
     } 
     echo "</dl>"; 
    } 
} 

Вот вывод HTML: http://jsfiddle.net/0qt773eb/

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