Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с парсингом rss канала
 
 автор: babilonian   (08.08.2007 в 03:00)   письмо автору
 
 

Есть канал вида:

<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
   <title>Заголовок</title>
   <link>http://www.site.ru/</link>
   <description>Описание</description>
   <lastBuildDate>Tue, 01 Aug 2007 22:31:41 GMT</lastBuildDate>
   <language>ru</language>
   <copyright>Copyright 1999-2007 site.ru</copyright>
<item>
  <guid isPermaLink="false">1234</guid>
  <pubDate>Sun, 05 Aug 2007 20:00:00 GMT</pubDate>
  <link>http://www.site.ru/articles/1.htm</link>
  <title>Заголовок</title>
    <description>Текст </description>
  </item>
<item>
  <guid isPermaLink="false">1232</guid>
  <pubDate>Sun, 05 Aug 2007 20:00:00 GMT</pubDate>
  <link>http://www.site.ru/articles/2.htm</link>
  <title>Заголовок 2 </title>
    <description>Текст 2</description>
  </item>
</channel>

</rss>


пытаюсь выдрать оттуда ссылки


$data = file_get_contents("http://site.ru/rss.php");
$pattern = "/<link>(.*)<\/link>/is";
preg_match_all($pattern, $data, $out);
unset($out[0]);
print_r ($out);


Не выходит. Помогите плз!

   
 
 автор: Unkind   (08.08.2007 в 08:42)   письмо автору
 
   для: babilonian   (08.08.2007 в 03:00)
 

Либо
$pattern = "/<link>(.*)<\/link>/Uis";

, либо
$pattern = "/<link>(.*?)<\/link>/is";

   
 
 автор: babilonian   (08.08.2007 в 09:35)   письмо автору
 
   для: Unkind   (08.08.2007 в 08:42)
 

Пустой массив идет( Может потому что там 2 пробела в начале. Но конструкция вида
/^\s\s<link>(.*?)<\/link>/is

тоже не катит:(

   
 
 автор: Faraon   (08.08.2007 в 10:06)   письмо автору
 
   для: babilonian   (08.08.2007 в 09:35)
 


$pattern = "/<link>(.+?)<\/link>/is";

   
 
 автор: kasmanaft   (08.08.2007 в 12:36)   письмо автору
 
   для: babilonian   (08.08.2007 в 09:35)
 

Чтобы такая катила, нужно модификатор "m" добавить
"/^\s\s<link>(.*?)<\/link>/ism"

Unkind показал два рабочих варианта.

   
 
 автор: babilonian   (16.08.2007 в 01:54)   письмо автору
 
   для: kasmanaft   (08.08.2007 в 12:36)
 

Верю, что оба варианта показанные Unkind'ом работают. Только почему-то не в моем сслучае. А вот за Ваш, большое спасибо. Как раз он подошел.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования