Мне лучше начать с того, что я не программист. Я изменяю корзину покупок, и теперь у меня проблема, связанная с моей платной подпиской. Тележка позволяет мне отображать вывод RSS-ленты в блоке на странице. Проблема в том, что большая часть содержимого корма находится внутри тегов CDATA и поэтому не отображается должным образом. Мне нужно вырезать теги CDATA из фида.Удаление тегов CDATA из rss (xml) feed
Код, который обрабатывает канал является
function fn_get_rss_feed($data)
{
if (!empty($data['feed_url'])) {
$data_key = 'rss_data_cache_' . (isset($data['block_data']['block_id']) ? $data['block_data']['block_id'] : 0);
if (!empty($data['cache_time'])) {
Registry::register_cache($data_key, $data['cache_time'], CACHE_LEVEL_TIME);
}
if (Registry::is_exist($data_key) == false) {
$limit = !empty($data['max_item']) ? $data['max_item'] : 3;
$rss_data = array();
$rss = simplexml_load_string(fn_get_contents($data['feed_url']));
if (!empty($rss)) {
$it = 0;
$items = array();
foreach ($rss->channel->item as $item) {
if ($it > $limit) {
break;
}
$items[] = array(
'title' => (string)$item->title,
'description' => (string)$item->description,
'pubDate' => (string)$item->pubDate,
'link' => (string)$item->link
);
$it++;
}
$rss_data = array(array(
$items,
(string)$rss->channel->link,
$data['feed_url']
));
Registry::set($data_key, $rss_data);
}
return $rss_data;
} else {
return Registry::get($data_key);
}
}
return array();
}
Это «описание», который получил CDATA метки вокруг него. Поиск в сети Я нашел этот код для удаления тегов CDATA из строки.
function strip_cdata($string)
{ preg_match_all('/<!\[cdata\[(.*?)\]\]>/is', $string, $matches);
return str_replace($matches[0], $matches[1], $string);
}
Я полагаю, что есть способ, чтобы использовать эту функцию, чтобы лишить теги CDATA со всего описания - или, может быть, там нет. Выходной файл rss отображается через файл .tpl.
Любая помощь с благодарностью получена.
Брюс
Благодарим за помощь, но она по-прежнему отображает всю информацию внутри тегов cdata и не читает html вокруг содержимого. – user1328397
Хм, извините, но я действительно не понимаю проблему. – rwos
Не беспокойтесь - я уверен, что у вас все еще есть понимание, что я знаю. – user1328397