парсер XML, не видит XML тэги

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Ответить
supercelt
Сообщения: 5
Зарегистрирован: 27 окт 2009, 21:05

Помогите пожалуйста. Нужно просто просканить ленту RSS, выдернуть из неё всё что встречается между <item></item>

Код: Выделить всё

function get_search_bazos($lines, $url)
{
global $done_2;
    foreach($lines as $line)
    {
    $line = urlencode($line);
    $page = @file_get_contents($url.$line); 
    
    preg_match_all('!<item>(.*?)</item>!', $page, $output);
        for($i=0; $i < count($output[0]); $i++)
        {
        $str = $output[0][$i];
        $done_2 .= $str.'
';
        }
        
    $done_2 .= '

';
    $done_2 .= '<hr>';
    }
return $done_2;    
}
$lines = file('words.txt');
$url_2 = 'http://www.bazos.cz/rss.php?hledat=';
$done_2 = '';
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>destroy obuv - Seznam</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>';
echo get_search_bazos($lines, $url_2);
echo '</body></html>'; 
 
При скане, отдаваемый код такой:

[HTML]
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Bazos.cz - recept</title><link>http://www.bazos.cz/</link>
<description>Bazoš - internetový bazar, on-line inzerce zdarma.</description>
<language>cs</language>
<item>
<title>KRÁSNÁ KUCHAŘKA - 200</title>
<link>http://knihy.bazos.cz/inzerat/4498850/K ... .php</link>
<description><![CDATA[<img src="http://www.bazos.cz/knihy/obr/1t/4498850.jpg" class="obrazek" />Prodám krásnou kuchařku, kde vaří známé hlasatelky a radí své oblíbené recepty. Kuchařka je úplně nová, nepoužitá, byl to nevhodný dárek, tak posílám dál. Vhodný dárek třeba k vánocům. ...]]></description>
<pubDate>Fri, 30 Oct 2009 19:04:24 +0100</pubDate>
</item>
<item>
<title>Přirozená cesta ke kráse - 140</title>
<link>http://knihy.bazos.cz/inzerat/4497760/P ... .php</link>
<description><![CDATA[Autor: Maria - E. Langeová - Ernstová. Témata knihy: jak šetrně pečovat o pleť a vlasy, praktické návody a recepty na přírodní kosmetické přípravky. 1x čtená, 127 stran, formát trochu větší než A5. ...]]></description>
<pubDate>Fri, 30 Oct 2009 16:26:55 +0100</pubDate>
</item>
</channel>
</rss>
[/HTML]

Фишка в том, что тоже самое проделывал с HTML документом, всё работало, я искал что между тэгами <table></table>. А вот XML тэги <item></item> регулярка не видит
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Возможно, закрывающий слэш надо заэкранировать.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
supercelt
Сообщения: 5
Зарегистрирован: 27 окт 2009, 21:05

Хыиуду писал(а):Возможно, закрывающий слэш надо заэкранировать.
Это в каком месте ставить?
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

preg_match_all('!<item>(.*?)</item>!', $page, $output);
заменить на
preg_match_all('!<item>(.*?)<\/item>!', $page, $output);
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
supercelt
Сообщения: 5
Зарегистрирован: 27 окт 2009, 21:05

Хыиуду писал(а):preg_match_all('!<item>(.*?)</item>!', $page, $output);
заменить на
preg_match_all('!<item>(.*?)<\/item>!', $page, $output);
Спасибо, понял)
Ответить