Вот только сегодня закончил писать скрипт парсера RSS лент для одного постоянного заказчика и решил поделиться способами и возможностями который нам предлагает язык PHP для этого дела (парсинга RSS). Для начала давайте я скажу о том что такое вообще RSS, вдруг кто-то из вас еще не знает. Сочинять сам не буду, а просто процитирую википедию:
RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными программами-агрегаторами.
То есть это по сути XML (кто незнает что это идем в википедию и читаем), а XML как нам известно хорошо структурированный документ. Я клоню к тому что если в RSS есть открывающий тег, то должен быть и закрывающий (например: <title>Заголовок</title>), иначе это не RSS. Думаю на данном этапе суть ясна: нам нужно получить информацию заключенную между тегами. Любая RSS лента имеет заголовок заключенный между тегами <title></title> и сам текст статьи заключенный между тегами < description></description>, именно их нам и нужно спарсить.
Теперь расскажу о способах написания RSS парсера и что предлагает нам PHP для реализации.
Способ 1 – SimpleXML
SimpleXML – это расширение для PHP5 устанавливаемое в него по умолчанию, представляет самый простой и элегантный способ обработки XML (соответственно и RSS) файлов. Это и наиболее предпочтительный способ, но он стал доступным только в 5 версии PHP. Тут нет ничего проще, данный код наглядно показывает как просто парсить RSS ленты средствами SimpleXML:
<?
$url = 'rss.xml'; //адрес RSS ленты
$rss = simplexml_load_file($url); //Интерпретирует XML-файл в объект
//цикл для обхода всей RSS ленты
foreach ($rss->channel->item as $item) {
echo '<h1>'.$item->title.'</h1>'; //выводим на печать заголовок статьи
echo $item->description; //выводим на печать текст статьи
}
?>
Данный код выведет заголовки и тексты статей из RSS ленты. Просто ведь? Этим SimpleXML и привлекает. Дальше вам нужно будет только правильно распорядиться полученными данными, записать в базу или еще куда-нибудь.
Способ 2 – XML Parser Functions
XML Parser Functions - это стандартные функции PHP для работы с XML доступные начиная c 4-ой версии PHP. Тоже нет ничего сложного, правда в отличие от SimpleXML совсем не элегантно. Продемонстрирую пример:
<?
$url = 'rss.xml'; //адрес RSS ленты
$xml = xml_parser_create(); //создаёт XML-разборщик
xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1); //устанавливает опции XML-разборщика
xml_parse_into_struct($xml, file_get_contents($url), $element, $index); //разбирает XML-данные в структуру массива
xml_parser_free($xml); //освобождает XML-разборщик
$count = count($index["TITLE"])-1; //число проходов цикла.
for ($i=0; $i < $count; $i++) {
echo '<h1>'.$element[$index["TITLE"][$i+1]]["value"].'</h1>'; //выводим на печать заголовок статьи
echo $element[$index["DESCRIPTION"][$i+1]]["value"]; //выводим на печать текст статьи
}
?>
Вот таким образом мы получаем интересующие нас содержимое элементов RSS. Но тут уже нужно разобраться с массивами которые создает XML разборщик.
Способ 3 – Написать RSS парсер самому
Например я делал именно так, когда не знал про существование SimpleXML и XML Parser Functions. Приведу небольшой пример парсинга RSS обычным процедурным PHP кодом, тут за парсинг отвечает функция preg_match_all(), которая выполняет глобальный поиск шаблона в строке. Данный пример не совершенен и парсит только титлы и дескрипшены у RSS:
<?
$url = 'rss.xml'; //адрес RSS ленты
$rss = @file_get_contents($url); //получаем содержимое RSS лент в виде одной строки
if ($rss) {
preg_match_all("/title>[^>]+>/", $rss, $title); //парсим титлы
preg_match_all("/<description>[^<]+<\/description>/", $rss, $description); //парсим дескрипшены
$count = count($title[0])-1; //число проходов цикла.
for ($i=0; $i < $count; $i++) {
echo '<h1>'.substr($title[0][$i+1], 6, -8).'</h1>'; //выводим на печать заголовок статьи
echo substr($description[0][$i], 13, -14); //выводим на печать текст статьи
}
} else {
echo '<font color="red">Ошибка парсинга '.$url.'</font>'; //выводим ошибку если file_get_contents() вернула false
}
?>
Таким же способом можно и отпарсить остальные элементы RSS ленты, главное написать правильно регулярку.
На этих трех способах мы и остановимся, еще есть наверняка множество сторонних скриптов и классов в PHP для парсинга XML, например magpieRSS у которого проблемы с кодировкой при парсинге и решить ее у меня не получилось, да собственно не очень то и хотелось, когда есть SimpleXML и XML Parser Functions. Вот кстати о проблемах с кодировкой мы сейчас и поговорим…
Проблемы с кодировкой
RSS ленты как правило находятся в кодировке UTF-8, при парсинге русского текста тремя способами описанными выше, нам на экран выводятся кракозябры. Все потому, что тест к нам приходит в кодировке UTF-8. Для того что бы вывести нормальные РУССКИЕ буквы нужно перекодировать спарсеный текст из кодировки UTF-8 в Windows-1251. Для этих целей в PHP существует функция iconv(), но она доступна не на всех серверах и чтобы избежать дальнейших проблем с вашим RSS парсером советую использовать самописную функцию перекодировки. Вникать в тонкости кодировок и разбираться как из одной кодировки получается другая думаю вам не хочется, так же не хотелось и мне. Немного погуглив я нашел замечательную функцию перекодировки из UTF-8 в Windows-1251 и обратно, предоставляет ее некий товарищ E64F. Возможно конечно он тоже ее где-то слямзил, но это не так важно, важно то что она мне очень понравилась по сравнению с другими нагуглеными функциями. Выкладываю функцию и пример ее использования:
<?
echo utf8_convert($str, "w"); //перекодирует $str из UTF-8 в Windows-1251 и выведет на экран
function utf8_convert($str, $type)
{
static $conv = '';
if (!is_array($conv))
{
$conv = array();
for ($x=128; $x <= 143; $x++)
{
$conv['utf'][] = chr(209) . chr($x);
$conv['win'][] = chr($x + 112);
}
for ($x=144; $x<= 191; $x++)
{
$conv['utf'][] = chr(208) . chr($x);
$conv['win'][] = chr($x + 48);
}
$conv['utf'][] = chr(208) . chr(129);
$conv['win'][] = chr(168);
$conv['utf'][] = chr(209) . chr(145);
$conv['win'][] = chr(184);
}
if ($type == 'w')
{
return str_replace($conv['utf'], $conv['win'], $str);
}
elseif ($type == 'u')
{
return str_replace($conv['win'], $conv['utf'], $str);
}
else
{
return $str;
}
}
?>
Функция utf8_convert() принимает 2 параметра: $str – наша строка которую нужно перекодировать и $type – в какую кодировку нужно кодировать (“w” – из utf в win, “u” – из win в utf). Как это применить к нашим 3-м способам парсинга RSS думаю разберетесь, если хоть немного знаете PHP.
Вот на этом пожалуй и закончим. Удачного парсинга ;)!



Отвратительно, вот такие вот скрипты потом и висят на сайтах, а нам потом копаться в этом дерьме когда очередной заказчик захочет модернизировать сайт который ему написали такие "писаки"
Оу оу оу Vladson, притормозьте, вы вообще о чем? Что вы называете дерьмом? Копаться... И как долго вы обычно копаетесь в ~10 строках кода? Поясните ваше высказывание...
Премного благодарна вам. Ваш сайт это прекрасный повод найти приятных и образованных людей, способных к конструктивным обсуждениям и критике. :)
Как говорится.. Не дать не взять, зачётная статья!
Наверное Vladson испугался рег. выражений )
Уважаемый автор!
Исправьте пожалуйста в последнем листинге echo на function.
С уважением "некий товарищь" E64F ))
Спасибо большое "некий товарищь" E64F =)!
Делаешь, стараешься блин и все равно проглядел ошибочку.
Спасибо за статью, всегда рада почитать вас!
Люблю почитать подобное
Спасибо за Ваш труд!!
Полностью согласна!
Это уже интересней.
Подскажите на счет последнего.
Я в пхп вообще ноль, но просто ОЧЕНЬ нужно сделать. Куда нужно вставить код функции utf8_convert(), чтобы русские буквы нормально отображались. Или нужно отдельный файл создавать с кодом этой функции. Объясните плз, очень-очень нужно. Можно на е-мэйл. Буду очень признателен.
Отличная статья, спасибо!
Сергей все содержимое последнего листинга вставьте в один файл.
function utf8_convert($str, $type) - все что ниже этой строчки - сама функция.
echo utf8_convert($str, "w"); - эта строчка выводит на экран резульат работы функции, где $str - ваша строчка которую необходимо перекодировать, "w" - параметр который определяет из какой кодировки в какую конвертить ("w" - из utf в win, "u" - из win в utf)
не отображаются картинки почему-то( это только у меня так?
ПОДСКАЖИТЕ, что нужно делать с этим кодом. Т.е. я в пхп ноль, но думаю, что код нужно сохранит в файл пхп, а с другой страницы (где желаем выводить парсерные новости), что-то типа иклуд. Помогите плз.
[php]
// кешируем RSS файлик
// место куда пишем файлик кэша
$filename = $_SERVER['DOCUMENT_ROOT']."/cache/phpnews.rss";
// проверяем насколько старый файлик
$modif=time()-@filemtime ("$filename");
// если в кэше нет файла или он слишком старый - обновляем
if(!file_exists($filename) || $modif>"3600")
{
$rss = file_get_contents("http://www.php.net/news.rss");
$handle = fopen ("$filename", "w");
fwrite($handle, $rss);
fclose($handle);
}
// читаем файлик с помощью Simple XML
$RSS = simplexml_load_file($filename);
// для любопытных что жк мы там получили :-)
//VAR_DUMP($RSS);
foreach ($RSS->channel->item as $item) {
// при надобности перекодируем полученные данные в нужную кодировку
//$item->description = iconv("UTF-8","WINDOWS-1251",$item->description);
//$item->title = iconv("UTF-8","WINDOWS-1251",$item->title);
//формируем ссылку и выводим данные
echo "link."\">".$item->title."$item->description";
}
[/php]
полезная статья, пригодилась :-)
Сергей у вас iconv() не срабатывает или что? Функция перекодировки от товарища E64F нужна если у вас iconv() не срабатывает. Я не свовсем понял какой результат вы хотите получить...
К предыдущему комментатору: мне кажется, это уже лишнее здесь
Распечатываю… на стенку в самое видное место!!!
Ув. Wincert, подскажите, а нет ли возможности доделать SimpleXML (Способ 1) так, чтобы можно было ограничить количество выводимых новостей, к примеру, чтоб была возможность задать вывод 1 новости.
Спасибо!
Если Вас не затруднит, что дописать, чтобы сделать такое?
Спасибо!
Игорь советую вам разобраться все таки с тем как получать содержимое XML элементов средствами SimpleXML, проще и элегантнее способа я не знаю. Если лень с этим разбираться, то в конце цикла foreach поставьте exit();, но это "гуманный" способ решения вашего вопроса.
Кто знает как парсить вот такие штуки с rss
Жек регулярные выржения вам нужно изучать, вот тут отличный мануал по регуляркам - http://omsk777.ru/all.php?act=posix
Спасибо, пойду пробовать установить парсер. Самое главное, что он простой и с кэшированием.
Интересно, я даже и недумала об этом…
Не зачет!
Всегда читаю ваши посты с наслаждением. Всегда интересно, что напишите на этот раз
Неоднократно доводилось читать подобные посты на англоязычных блогах, но это не значит что ваш пост мне не понравился
У вас RSS в кривой кодировке!
UNJohn можно подробнее что и где криво?
Познавательно! Все очень понятно и грамотно. Спасибо автору!
Интересно тут у вас :)
iconv у меня не работает на сервере, хотя PHP 5. В общем не знает он такой функции (((
Попробовал код от E64F. Ну не работает он, хоть убейте. Даже специально ему строку в UTF-8 подсунул (к $str присвоил строку в UTF-8) и поставил $type = w (хотя ставил и "w" и "u"), все равно выводит utf-8. Часа 2 убил, так он мне ничего и не перекодировал. В браузере ставлю кодировка UTF-8 - все читается... значит не сработал...
HTCs710 Я когда-то с этим тоже часами сидел... Терпение и труд... Специально перепроверил работу функции, все работает, видать вы чего-то неправильно делаете.
Это можно заюзать для разработки самонаполняющегося сайта, или в seo разработках, типо брать контент с лент новостей для заполнения доров...
Хорошо пишете. Я бы конечно некоторые моменты оспорила, ну да ладно.
Спасибочки! Буду теперь заходить на этот блог почаще!
Zoossyzeproke оспорьте, я только за ).
VDWilliam можно поподробнее что и где криво?
Люблю почитать подобное
Спасибо за информацию
Действительно классная темка.
Урааа... давно искал, спасибо большое ;)
интересно, а почему вы так давно новые посты не пишете? Что-то случилось:(
Лилия времени нету совсем, в этом году еще один пост запланирован у меня, как освобожусь так сразу напишу.
вау дайте две
Хотелось бы поговорить насчёт рекламы в вашем блоге.
КОНТАКТЫ
Спасибо, автор! Второй способ мне очень приглянулся!
Огромное СПАСИБО! Этот блог - супер!!!
очень интересно :)
Понравился ваш сайт
Хорошая статья, грамотная. Я свой первый парсер вообще по substr_count(часть кода,обработчик) делал, лишь через год узнал про preg_match и вообще xml_parse :)
Защиту от спам-комментов я бы усилил
а я чего - то не понимаю! ты выкладываешь код программы, которую ты писал на заказ? а не боишься что получьшь на орехи?
Нече скриптик попробывал зачетно..
Денис я не выкладывал код программы котоую писал на заказ. Здесь лишь описанны способы парсинга RSS лент, с помощью одного из которых я писал скрипт на заказ.
Чувак, мощно написал. Мне понравилось.
Вопрос по первому варианту.
В случае если в ленте используют теги типа ...
то конструкция вида
echo $item->full-text
будет воспринята как разница между $item->full и константой text и в итоге на вывод отправит 0 как быть
Гость, не использовать теги с "-", или сделать это с помощью способа 2 или 3.
у меня тянет только часть текста. есть подозрение что существует какое то ограничение в 255 чимволов. не в курсе?
Значит в ленте 255 символов, ограничений там нет.
А как сделать что бы "Способ 1 – SimpleXML" парсил не только title и description, но и картинки с сайтов?
SimpleXML парсит не сайты, а XML файлы.
http://kino.ukr.net/i/news.xml - как отсюда парсить на SimpleXML текст(xml) вместе с картинками?
При помощи SimpleXML никак, тут придется самому писать функцию парсинга.
Привет, жив? А я сам парсер себе писал, что бы еще можно было картинки выдернуть из RSSки в случае надобности... =)
Nick Denry привет! Конечно жив ), а ты куда пропал?
Отличная статья, спасибо. Собрался было подписать Ваш блог, но обнаружил, что ссылка на Ваш фид устарела, т.к. Вы его видимо переместили:
В счетчике RSS вверху справа этой страницы:
http://feeds.feedburner.com/Wincert
А фид на самом деле тут:
http://feeds2.feedburner.com/Wincert
Еще раз спасибо.
интересно, только немного не то, что ищу, но и на том спасибо
Очень интересно пишете, достойно внимания, тема развернута полностью, заходите в гости)!
я не мастер но второй способ парса пришлось переделать так
$count = count($index["TITLE"]); //число проходов цикла.
for ($i=0; $i < $count; $i++) {
echo ''.$element[$index["TITLE"][$i+1]]["value"].''.''; //выводим на печать заголовок статьи
echo ''.$element[$index["DESCRIPTION"][$i]]["value"].''; //выводим на печать текст статьи
}
может из за того что руки кривые но у меня выдовал сначало дескрипшн а потом титл, т.е. получался дискрипшн а потом шел заголовок для него :)
Спасибо за интересный материал
Спасибо за сайт, так много информации подчерпнула!
Спасибо, помогло... :)
В первом H1 выдает название сайта, как распарсивать только по тем тегам которые мне нужны?
Антон
Я так понимаю ты говоришь про второй или третий способ. RSS по структуре разные бывают, поэтому эти споособы оказались не совсем универсальные. Как будет время я доработаю их.
Пост закончился на самом интересном месте, RSS выводится прекрасно, но в UTF и ничего сделать не могу, поддержки iconv нет, что куда ставить?
Может быть кто-то действительно поможет с перекодировкой?
Mux@
Почитайте про функции в PHP, тогда все вопросы отпадут.
дерьмовый код перекодировщика! учитесь юзать iconv()!!!
Гость
Умник... Выложи не дерьмовый. Если простой хостинг (на котором нет доступа к настройкам сервера) и iconv() не настроен, то учиться нечему и придется пользоваться этой ф-цией.
Автор, огромное спасибо!
Возникла необходимость парсить rss-ленту.
Нашёл ваш сайт и в две минуты всё заработало! Воспользовался первым вариантом с SimpleXML. Очень круто!
Спасибо большое. Парсил раньше рсс другими методами (больше похоже на 3-й). При попмощи Вашей статьи - упростил код! РСС-парсинг наше всё :)
Набрали вы спама огромную кучу
Добавляю в избранное. Хотя пришел по ссылке случайно. Будет время навяжу дискус.
очень интересная статья, а вот интересно можно ли розьеденить все новости что бы вносить в базу на пример по одной, а то так выйдет что вноситься полностью вся доступная лента(10-15заголовков) для первого примера?
Serg
Не совсем понял вопроса... В примерах каждая запись из ленты выведется отдельно от другой вместе с заголовком, они в цикле выводятся. Если вы знакомы с массивами, то вам не составит труда разобраться что там к чему.
Полностью согласен с большинством - статья просто класс !!! Спасибо автору.
Вот бы еще немного бы разживали про парсинг картинок. Думаю многим бы здесь пригодилось бы.
Метод довольно неплохой, хотя и трудоемкий. Но... каждый парсит как может.
Wincert, большое человеческое. Использовал Ваш второй способ вместе с функцией перекодировки. Небольшой вопрос: при перекодировке символ № отображается неправильно, как от этого можно избавится?
SunRaider
str_replace("*", "№", $str);
Вместо звездочки нужно поставить не перекодированный символ №
Wincert
И вновь спасибо. Если не возражаете, еще два вопроса.
1) Как быть если неправильно отображаются кавычки? У меня вместо кавычек выводятся знаки вопроса.
2) Можно ли сделать тайтл ссылкой на тот сайт откуда берется лента?
Заранее спасибо.
SunRaider
Честно говоря возражаю, на первый вопрос смотрите ответ выше.
2) echo '<h1><a href=".$element[$index["LINK"][$i+1]]["value"].
">'.$element[$index["TITLE"][$i+1]]["value"].'</a></h1>';
Wincert
С первым вопросом такое решение помогло потому что там мне надо было заменить серию символов, которые в нормальном тексте никогда не встретятся. А если я напишу str_replace(); для знака вопроса, то будут заменены вообще все вопросы в строке. Плюс кавычки могут быть левой и правой. Т.е. мне надо искать первое и второе нахождение символа в тексте?
ЗЫ. Спасибо за ссылку.
SunRaider
Зачем вопрос туда вставлять, выясни как пишутся нужные тебе символы в другой кодировке и их заменяй.
Сорри, а почему он игнорирует внешние ссылки?
Адрес по типу: http://bash.org.ru/rss/index.xml выдает:
Warning: file_get_contents(http://bash.org.ru/rss/index.xml) [function.file-get-contents]: failed to open stream: Connection refused.
Wincert, не в обиду, но почисти комменты от спама! Сообщения подобного рода: "Спасибо за сайт, так много информации подчерпнула!" с ссылкой на какой-нибудь говносайта удаляй сразу, они рассылаются почти автоматом. Имидж твоему блогу портит серьезно.
Способ 1 – SimpleXML мне очень понравился, вот только одна проблема, как мне прописать стили к выводимым заголовкам и записям, в каком месте кода нужно указать на них
да и еще извени сразу забыл спрасить а какой код нужно добавить к первому способу что бы еще выводила картинку из записи
vanicon
Стили указываются так же как обычно.
Объяснять азы я тут не буду.
>>какой код нужно добавить к первому способу что бы еще выводила картинку
Правильный! Писать за тебя я его не буду.
Здравствуйте, функция перекодировки очень интересная. но всё же портит спецсимволы, поймал те же проблемы с ковычками и знаком вопроса и т.д. ребята помогите доработать str_replace("В«", "«", $str);
str_replace("В»", "»", $str); не катит т.к. и в правду заменит что нибудь не то..
Как можно распоточить рсс-ленты? То есть несколько лент на пхп-поток пустить.
А можно как-то выводить только ньюсы содержащие ключевое слово в теле или в заголовке?
Если распишите в примере - "Как это применить к нашим 3-м способам парсинга RSS думаю разберетесь, если хоть немного знаете PHP."
Положу 1$ на мобилку/вебмани ))
Спасибо за простое решение. Тем более, мне анлоязычный rss выдрать надо было, и с кодировкой возни никакой.
А спама тут и вправду навалили.
А мне статья понравилась, странно, что люди не отличают обзорный код от проффесионального.
Берем код с этой статьи и правим под себя его профессионально, как хотим.
Автору спасибо. Не ошибаеться тот кто нефига не делает.
бесплатный хостинг с поддержкой хостинг сайтов hosting.miheeff.ru платный хостинг http://hosting.miheeff.ru хостинг Стоимость хостинг тарифа VSH-A составляет 100 рублей в месяц бесплатный хостинг с поддержкой
а можно узнать как сделать простейшую запись в базу? а то как брать понятно а как положить то?
Спасибо, освоил чтение rss за три минуты, выбрав первый способ :)
Думал будет сложнее.
Хорошая статья, грамотная. Я свой первый парсер вообще по substr_count(часть кода,обработчик) делал, лишь через год узнал про preg_match и вообще xml_parse :)
Защиту от спам-комментов я бы усилил
а есть готовый скрипт парсинга какого нидь новостного ресурса? интересно посмотреть в действии теорию.
Спасибо за статью!
1. Возможно ли парсить не всю ленту, а только несколько последних сообщений?
Очень уж долго выполняется скрипт, если необходимо просматривать одновременно 5-10 лент.
2. Не зависнет ли скрипт, если отключится сама лента?
devul
Готовый скрипт все равно на твоём ресурсе работать не будет, так как надо таблицу для приёма новостей создавать и таблицу парсируемых лент.
Итог парсирования десяти лент и вывод новостей только о Динамо, можно посмотреть нажав "Олег".
http://www.fandynamo.ru/news/
Сам скрипт парсинга запихал в CRON
спасибо) полезно)
Отличная статья. Но вот вопрос возник-что в первом варианте кода нужно добавить чтобы парсил не все новости-щас их выдает по 10 штук, а например ограничить 5 или вообще 2-3 новостями.
Подскажите плиз
Спасибо
Спасибо, доходчиво
ммм... есть вопрос а почему не iconv ?
спасибо, статья хоть и старенькая, но тема парсеров актуальна и сейчас.
Здравствуйте! Возможно Вы мне поможете. Есть RSS-файл http://www.newizv.ru/rss/daily.xml, доступен, нормально читается. PHP-функция simplexml_load_string отрабатывает как надо, а xml_parse_into_struct (можно ей не пользоваться, но тогда надо весь разбор заново переписать) виснет именно на этом файле наглухо. В обычном редакторе файл смотрел - ничего особенного. Получается формат правильный, что-то не то с содержанием, но вот что именно и как с этим бороться?
Думал с парсингом разбираться
и наткнулся на этот сайт
удачно
Сегодня обязательно заморочусь с парсингом. Я так понял именно на нем делают кроспостинг.
Методы хорошие - а почему как то было забыто банальный DOM Document?
З.Ы. наткнулся на ваш сайт и очень понравилась форма вывода комента!!
Очень доступно все о парсинге! спасибо
Да уж, теперь разбираться и разбираться. Но все равно - спасибо за такой пост!
Электроинструмент makita, перфораторы bosch,
http://stroytexnik.ru
ремонт в кратчайшие сроки с инструментом и оснасткой makita
http://serfibux.ru
http://free-many.ru
http://turnadoo.ru
шуруповерты aeg skil dewalt лобзики и
http://polyakow.ru
шлифмашинки.
http://magazin-elok.ru
Переехал на хостинг с пхп 5. Старый парсер не заработал. Включил гугл, нашел эту статью. За десять минут сделал новый парсер новостей для своего сайта www.unecha.net Спасибо.
Как уже было сказано несколькими постами выше есть как минимум ещё один способ парсинга - с использованием DOMDocument. Пример реализации можно посмотреть здесь - http://www.michael-smirnov.ru/
Подскажите, а как сделать, чтобы заголовок новости выводился как ссылка?
2Alexey: Походу, написать еще один парсер ) --> парсер парсящий результаты парсинга!
Отправить комментарий