2013-09-16 41 views
0

我的代碼是這樣的:HTML代碼將出現在頁面源,而不是通過瀏覽器執行

$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> 

的出現,而不是像往常一樣超級鏈接

什麼是錯我的代碼?

+0

它是一個DOMDocument嗎?你有沒有試圖手動創建'a'節點? –

+0

是的,它是如何做到的? –

回答

2

您添加文本到跨越節點值,增加你必須創建createElement錨節點,並添加attributes到它,然後append它的跨度錨節點。


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); 
    } 
} 
+0

是的,使用nodeValue會導致HTML字符被轉義(很像htmlspecialchars()),因此您可以在屏幕上看到它們。 –

+0

@Musa請幫助我,並根據您的建議顯示代碼 –

+0

@mirandakerry如果您按照答案中的鏈接,您會看到如何執行每一步。 – Musa

0

看起來像你正在構建某種XML中的foreach。當您構建xml時,它會將html字符'<'編碼爲∓ gt;所以打印時你不會打印html。可能是html_entity_decode函數會爲你工作。

echo html_entity_decode($doc->saveHTML()) 
相關問題