我有一个脚本可以读取 XML 标记并将其打印在我的页面上。有些项目是链接(没有 HTML 标签),所以我创建了一个向它添加 HTML 链接标签的函数。但是,链接呈现为字符串而不是 HTML。
我知道它是因为我使用了 createTextNode,所以我需要一些将它作为对象而不是字符串返回的东西。
这是我的代码
function get_feeds() {
$feeds = array(
array(
'name' => 'Agenda',
'url' => 'http://www.beleefdokkum.nl//pages/rss.aspx?type=agenda',
'get' => array('title', 'description', 'link'),
'scope' => array(1, 10)
),
array(
'name' => 'News',
'url' => 'http://www.beleefdokkum.nl//pages/rss.aspx?type=nieuws',
'get' => array('title', 'description', 'link'),
'scope' => array(1, 10)
),
array(
'name' => 'Social media',
'url' => 'http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=NOFriesland',
'get' => array('description'),
'scope' => array(1, 10)
)
);
$result = new DOMDocument();
function linkify($text) {
$text = preg_replace('/(https?:\/\/\S+)/', '<a href="\1" class="preg-links">\1</a>', $text);
$text = preg_replace('/(^|\s)@(\w+)/', '\1@<a href="http://twitter.com/\2" class="preg-links">\2</a>', $text);
$text = preg_replace('/(^|\s)#(\w+)/', '\1#<a href="http://search.twitter.com/search?q=%23\2" class="preg-links">\2</a>', $text);
return $text;
}
foreach ($feeds as $feed) {
$xml = new DOMDocument();
$xml->load($feed['url']);
$frame = $result->createElement('div');
$frame->setAttribute('class', 'feed_frame');
$result->appendChild($frame);
$name = $result->createElement('h1', $feed['name']);
$name->setAttribute('class', 'feed_name');
$frame->appendChild($name);
$content = $result->createElement('div');
$content->setAttribute('class', 'feed_content');
$frame->appendChild($content);
for ($i = $feed['scope'][0]; $i < $feed['scope'][1]; $i++) {
$item = $result->createElement('span');
$item->setAttribute('class', 'feed_item');
$content->appendChild($item);
foreach ($feed['get'] as $get) {
$object = $result->createElement('p');
$text = $result->createTextNode(linkify($xml->getElementsByTagName($get)->item($i)->nodeValue));
$object->appendChild($text);
$object->setAttribute('class', 'feed_'.$get);
$item->appendChild($object);
}
}
}
return $result->saveHTML();
}