Ниже рабочий код парсера. Всё работает как надо, но нужно исключить все встречающиеся изображения в самой новости <description>(.*?)<\/description> , чтобы остался только текст.
Сама картинка в новости выглядит так:
<description> тут новость начинается
<center>
<img style="margin-bottom: 10px; margin-top: 10px" id="*" alt="** " src="/Images/**/**.jpg" align="center" border="0" />
</center>
далее продолжение новости.
</description>
Код парсера:
function parse_rss_tri($reg_exp_tri, $xml_data_tri) {
preg_match_all($reg_exp_tri, $xml_data_tri, $temp_tri);
return array(
'count_tri' => count($temp_tri[0]),
'title_tri' => $temp_tri[1],
'link_tri' => $temp_tri[2],
'desc_tri' => $temp_tri[3],
'category_tri' => $temp_tri[4],
'pubDate_tri' => $temp_tri[5]
);}
function output_rss_tri($pattern_tri, $rss_data_tri) {
for($y=0; $y<$rss_data_tri['count_tri']; $y++) {
$temp_tri .= sprintf($pattern_tri,
$rss_data_tri['link_tri'][$y],
html_entity_decode($rss_data_tri['title_tri'][$y]),
html_entity_decode($rss_data_tri['category_tri'][$y]),
html_entity_decode($rss_data_tri['pubDate_tri'][$y]),
html_entity_decode($rss_data_tri['desc_tri'][$y])
);
}
return $temp_tri;
}
$url_tri = 'http://link/rss.rss';
$reg_exp_tri = '#<item>.*?<title>(.*?)<\/title>.*?';
$reg_exp_tri .= '<link>(.*?)<\/link>.*?';
$reg_exp_tri .= '.*?<description>(.*?)<\/description>.*?<category>(.*?) <\/category>';
$reg_exp_tri .= '.*?<pubDate>(.*?)<\/pubDate>.*?<\/item>#si';
$pattern_tri = '<div><p class="line"><br><span class="post-ident"><a class="post-num" title="перейти к первоисточнику" href=\"%s\">%s</a>
</span><p class="dateclass">%s → %s</p><p>%s</p></p></div>';
if ( $xml_data_tri = file_get_contents($url_tri) ) {
$rss_data_tri = parse_rss_tri($reg_exp_tri, $xml_data_tri);
echo output_rss_tri($pattern_tri, $rss_data_tri);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей