2013-09-16 2 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

예 domdocument 이렇게하는 방법? –

답변

2

span 값에 텍스트를 추가하여 앵커 노드를 추가하려면 createElement으로 앵커 노드를 만들고 attributes을 추가 한 다음 append을 범위에 추가합니다. 당신이 foreach 문에서 XML의 일종을 구축하는 등의


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

@ 뮤사 이것으로 도와주세요. 제안에 따라 코드를 표시 할 수 있습니다. –

+0

@mirandakerry 답변의 링크를 따라 가면 각 단계를 수행하는 방법이 표시됩니다. – Musa

0

봐. xml을 빌드하면 html 문자 '<'을 ∓ gt;로 인코딩합니다. 그래서 인쇄하는 동안 실제로 html을 인쇄하지 않을 것입니다. html_entity_decode 함수가 도움이 될 수 있습니다.

echo html_entity_decode($doc->saveHTML()) 
관련 문제