0

我的代码是这样的:

$link = "<a class=\"openevent\" href=\"$finalUrl\" target=\"_blank\">Open Event</a>";
foreach ($spans as $span) {
if ($span->getAttribute('class') == 'category') {
$span->nodeValue .= $link;
    }
}

这里的问题是该$link变量在页面中作为 html 源回显

<a class="openevent" href="http://www.mysite.com/Free-Live-Streaming-Video-Online-Other-Cycling-Cycling-The-Tour-of-Britain-170638.html" target="_blank">Open Event</a>

而不是像往常一样出现超链接

我的代码有什么问题?

4

2 回答 2

2

您正在向跨度的节点值添加文本,要添加一个锚节点,您必须创建一个锚节点createElement并向其添加属性,然后将其附加到跨度。


foreach ($spans as $span) {
    if ($span->getAttribute('class') == 'category') {    
        $link = $doc->createElement('a', 'Open Event');
        $link->setAttribute("class", "openevent");
        $link->setAttribute("href", $finalUrl);
        $link->setAttribute("target", "_blank");
        $span->appendChild($link);
    }
}
于 2013-09-16T14:00:24.767 回答
0

看起来您正在 foreach 中构建某种 xml。当您构建 xml 时,它会将 html 字符 '<' 编码为 ∓gt; 因此,在打印时,您实际上不会打印 html。可能是 html_entity_decode 函数对你有用。

echo html_entity_decode($doc->saveHTML())
于 2013-09-16T14:00:55.707 回答