Я пишу этот 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 и сразу после нее отображает заголовок, который работает как ссылка. Но он должен быть в порядке.
Это, наверное, что-то действительно глупо, но я слишком долго смотрю на этот код и не могу найти проблему.
Я буду очень рад, если кто-то сможет мне помочь. благодаря
Операторы эха для тегов привязки <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/