Помогите пропарсить xml, пожалуйста...

vital

Новичок
Помогите пропарсить xml, пожалуйста...

Делаю вот так...

error_reporting(7);
$link = "http://blogs.mail.ru/corp/soft/?rss=1";
$fh = fopen($link,'r');
if($fh) {

while(!feof($fh)) $data.=fread($fh,8192);

fclose($fh);
preg_match_all('#<title><![CDATA[(.*?)]]></title>#si',$data,$data1);
preg_match_all('#<guid isPermaLink=\"true\">(.*?)</guid>#si',$data,$data2);

for ($i=0; $i<5;$i++)
{ echo "1- ".$data1[0][$i]." ";
echo "2- <a href='".$data2[0][$i]."'>" . $data2[0][$i] . "</a><br>";
}
}


xml - http://blogs.mail.ru/corp/soft/?rss=1


только вот $data1 почему-то возвращается пустой.. видимо от того, что шаблон в preg_match_all неправильно написан... и еще, когда выводится ссылка (строка echo "2- <a href='".$data2[0][$i]."'>" . $data2[0][$i] . "</a><br>"; в цикле), почему-то тег <guid> в ней тоже присутствует, хотя $data2[0][$i] выводится нормально, без него :(
Спасибо большое за советы.
 

vital

Новичок
так это ж кажись по 5 пхп? Ну щас гляну

-~{}~ 12.02.07 16:53:

ну да.. 5

-~{}~ 12.02.07 16:54:

здесь 4.4.4 версия..
 

vital

Новичок
не, ну да, я понял :) Я ж ничего и не говорю... А на счет шаблона для <title> не подскажешь что-нибудь
 

vital

Новичок
не, не хочет :(

-~{}~ 12.02.07 17:22:

:) c сылками разобрались так:

substr($data2[0][$i],25,-7)
 

vital

Новичок
Спасибо, щас гляну.. Но до меня кажется дошло почему title не отображается - он его скорей всего просто хавает как <title> и остается внутри документа скрытым :) Щас проверю...

-~{}~ 13.02.07 09:27:

и правда, substr() помог. а еще получилось с помощью preg_quote() ну ладно, всем спасибо, извиняюсь, что отвлек :)
 

Wicked

Новичок
люблю я извращенцев, которые парсят xml регулярными выражениями.

чем не устраивает xml parser?
 

Zet

Новичок
может лучше парсить rss фид rss ридером в котором уже все rss стандарты пописаны?
был где то скрипт онпрекрасно парсил все самые распространенные форматы, версии
 

urlin

Новичок
preg_match_all('#<title><!\[CDATA\[(.*)\]\]></title>#si',$data,$data1);
preg_match_all('#<guid isPermaLink="true">(.*)</guid>#si',$data,$data2);
попробуй.

-~{}~ 15.02.07 14:23:

Автор оригинала: Wicked
люблю я извращенцев, которые парсят xml регулярными выражениями.

чем не устраивает xml parser?
он работает быстрее?
 

urlin

Новичок
Поясни насчет "ровнее". Регулярки тоже работают ровно, если руки не кучерявые :)
 

Vallar_ultra

Любитель выпить :)
блин, ещё один любитель велосипедов с квадратными колесами.
 

urlin

Новичок
Как резко и неаргументировано, если у тебя в результате использования регулярок получается нечто с квадратными колесами, это еще не показатель :)
 

Vallar_ultra

Любитель выпить :)
urlin
получается нечто с квадратными колесами у любителей написать все что только можно самим и на коленке, т.к. лень читать мануалы и разбираться в том как работают те функции и пакеты, с которыми почему-то не приходилось работать до этого.
 

AmdY

Пью пиво
Команда форума
Vallar_ultra, я так понял у тя после регулярок получается - , это ты называешь квадратными колёсами (это была плоская шутка)
В php4 иногда для разбора простого xml стоит применять регулярки, они срабатывают быстрее. Но, заметь я предлагал xmldoc, а то ты меня снова, недочитав посты, обвинишь меня в изобретательстве.
 

urlin

Новичок
Согласен вообщем, но не в частности, но не будем углублятся во флуд :) Курю ман про парсинг, чуть позже отпишу, как оно с моей точки зрения :)
 
Сверху