RSS-канал не отображается

Я пытаюсь создать RSS-канал, который отображает все мои новости. До сих пор код, кажется, находится на полпути, потому что, если я просматриваю исходный код страницы, все содержимое там, но на реальной странице ничего не отображается.

Вот мой код rss.php

<?php
ini_set('display_errors', 1);
header("Content-type: text/xml");

include("config.php");
global $NEWS;
$str = '<?xml version="1.0" encoding="utf-8"?>';
$str.= '<rss version="2.0">';
$str.='<channel>';
$sql = "SELECT * FROM $NEWS";

$result = mysql_query($sql) or die ($sql."".mysql_error());

while($row = mysql_fetch_object($result)){
    $str.= '<item>';
    $str.=' <a href="'.getSEOLink(13).'&article='.$row->id.'">';
    $str.= '<title>'.$row->title.'</title></a>'; 
    $str.= '<description><![CDATA['.$row->content. ']]></description>';
    $str.= '</item>';
}

$str .='</channel>';
$str .='</rss>';
echo $str;
?>

2 ответа

Вы, очевидно, генерируете действительный XML (таким образом, ваш браузер не жалуется), но не действительный RSS (таким образом, читатели лент не смогут читать ваши материалы). Например, <a> не является допустимым тегом RSS и, безусловно, не является потомком <item>,

Скопируйте сгенерированный XML (не исходный код PHP) и подтвердите его с помощью своего любимого средства проверки RSS (например, W3C Feed Validation Service).

Почему бы не использовать asXML из SimpleXMLElement?

<?php
ini_set('display_errors', 1);
include("config.php");
global $NEWS;

$str='<channel>';
$sql = "SELECT * FROM $NEWS";

$result = mysql_query($sql) or die ($sql."".mysql_error());

while($row = mysql_fetch_object($result)){
    $str.= '<item>';
    $str.=' <a href="'.getSEOLink(13).'&article='.$row->id.'">';
    $str.= '<title>'.$row->title.'</title></a>';
    $str.= '<description><![CDATA['.$row->content. ']]></description>';
    $str.= '</item>';
}

$str .='</channel>';

$xml=new SimpleXMLElement($str);
echo $xml->asXML();
Другие вопросы по тегам