Не могу понять, почему код не выводит RSS

Тема в разделе "PHP", создана пользователем virtualbrest, 18 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. virtualbrest

    virtualbrest

    Регистр.:
    6 май 2007
    Сообщения:
    210
    Симпатии:
    18
    Есть код, который из базы выводит новости в RSS, все вроде правильно, отрабатывает без ошибок, в исходном коде вижу все что надо... а как RSS не работает, в чем я ошибся?

    PHP:
    $query = "select id, zagolovok, text from `news` limit 15";
    $result = mysql_query($query, $dbconnect);

    while ($line = mysql_fetch_assoc($result))
            {
                $return[] = $line;
            }

    $now = date("D, d M Y H:i:s T");

    $output = "<?xml version="1.0" encoding="windows-1251"?>
                  <rss version="2.0">
                    <channel>
                        <title>Виртуальный Брест RSS</title>
                        <link>http://name/rss.php</link>
                        <description>Новости сайта</description>
                        <language>ru-us</language>
                        <pubDate>$now</pubDate>
                        <lastBuildDate>$now</lastBuildDate>
                        <docs>http://name</docs>
                        <managingEditor>admin@name.com</managingEditor>
                        <webMaster>admin@name.com</webMaster>
                ";

    foreach ($return as $line)
    {
        $output .= "<item><title>".$line['zagolovok']."</title>
                        <link>http://name/news".$line['id'].".php</link>

    <description>".substr(strip_tags($line['text']),0,100)."</description>
                    </item>";
    }
    $output .= "</channel></rss>";
    echo $output;
    ?>
    name - мой домен. Кавычки экранированы (в приведенном выше коде нет).

    Вот такая ошибка вылазит, если отправляю по хидеру, что это XML:

    PHP:
    header("Content-Type: application/xml");
    PHP:
    Ошибка разбора XML: синтаксическая ошибка (Строка: 1, Символ: 0)

    Обработать документ как HTML
    Ошибка:missing root element
    Описание:http://www.w3.org/TR/REC-xml/
      1: |тут стоит курсор ошибки|<?xml version="1.0" encoding="windows-1251"?>
      2: <rss version="2.0">
      3: <channel>
    Все, сам разобрался, оказывается в тему попадали кавычки из базы данных, их надо убирать и все будет работать.
     
  2. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    до вывода скорее все го отправзяется один или несколько сиволов до начала выода, или где то присуствует символ которго не должно быть скорее всего ' или "
     
  3. virtualbrest

    virtualbrest

    Регистр.:
    6 май 2007
    Сообщения:
    210
    Симпатии:
    18
    Я уже ничего не понимаю, буду видимо писать удаление всех симоволов кроме букв, так как опять перестало работать. До вывода ничего не выводится, пробелов нет, переводов строк тоже нет. Позже отпишусь о результатах, пока нет времени экспериментировать.
     
  4. philip15

    philip15 Создатель

    Регистр.:
    25 фев 2009
    Сообщения:
    12
    Симпатии:
    1
    Нужно явно указать тип выводимого. Пробуйте вместо header("Content-Type: application/xml"); поставить
    header('Content-Type: text/xml; charset=utf-8'."\n");

    Не забудьте заменить utf-8 на ваш чарсет но вообще советую выводить в utf-8. Будет работать точно!
     
  5. virtualbrest

    virtualbrest

    Регистр.:
    6 май 2007
    Сообщения:
    210
    Симпатии:
    18
    Я что-то не могу понять, если в заголовке к примеру или в самом сообщении есть кавычки русские или простые, то че с ними делать? Если они есть то вообще ничего не выводится. Экранировать их как-то можно или тупо вырезать?
     
  6. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    Что есть
    ?
     
  7. virtualbrest

    virtualbrest

    Регистр.:
    6 май 2007
    Сообщения:
    210
    Симпатии:
    18
    пробовал, проблема не в этом, а в том что из базы вываливаются кавычки, с ними - ну никак, причем я их преобразовываю что угодно, но это ни на что ни влияет, все равно ничего не выводится. Как только никаких кавычек нет - все сразу ок.

    Так и думал что будут вопросы по кавычкам. Русские - это «образец» (ну не знаю я как они там правильно называются), простые это те что обычно экранируются слешем.

    А может кто-нибудо поделиться функцией или регуляркой кто чем пользуется для обработки строк, попадающих в RSS, а то меня уже совсем переклинило за эти 2 дня, ниче не пашет, и не могу понять почему? Буду премного благодарен.
     
  8. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    Стукни в аську, дам свою генерилку RSS.
     
  9. virtualbrest

    virtualbrest

    Регистр.:
    6 май 2007
    Сообщения:
    210
    Симпатии:
    18
    Если опять не будет работать, стукну, спасибо, но вроде победил. Проблема была действительно в кавычках, и только в русских, их почему-то стандарт в упор не понимает, вот как я вырезал:

    PHP:
    $text substr(quote_html($text), 0500);
    $text str_replace ("&laquo;""",  $text);
    $text str_replace ("&raquo;""",  $text);
    $text str_replace ("«""\"",  $text);
    $text str_replace ("»""\"",  $text);
    quote_html - функция, которая вырезает HTML.
     
Статус темы:
Закрыта.