Порядок вывода элементов

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. он отображает эту часть с desc и сразу после нее отображает заголовок, который работает как ссылка. Но он должен быть в порядке.

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

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

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

1 ответ

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/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню