2015-08-24 120 views
1

我需要通過使用PHP搜索元素,然後將HTML內容附加到它。它似乎很簡單,但我是新來的PHP,無法找到正確的功能來使用這一點。PHP:追加(添加)HTML內容到現有的元素ID

$html = file_get_contents('http://example.com'); 
$doc = new DOMDocument(); 
libxml_use_internal_errors(true); 
$doc->loadHTML($html); 
$descBox = $doc->getElementById('element1'); 

我只是不知道如何做下一步。任何幫助,將不勝感激。

+2

你嘗試,http://php.net/manual/en/domnode.appendchild.php?不知道'$ html'是什麼,或者你想添加如此難以舉例。 – chris85

回答

1

像克里斯在他的評論中提到的請嘗試使用DOMNode::appendChild,這將讓你一個子元素添加到您選擇的元素和DOMDocument::createElement實際創建的元素,像這樣:

$html = file_get_contents('http://example.com'); 
libxml_use_internal_errors(true); 
$doc = new DOMDocument(); 
$doc->loadHTML($html); 
//get the element you want to append to 
$descBox = $doc->getElementById('element1'); 
//create the element to append to #element1 
$appended = $doc->createElement('div', 'This is a test element.'); 
//actually append the element 
$descBox->appendChild($appended); 

或者,如果你已經有了一個要追加可以create a document fragment像這樣的HTML字符串:

$html = file_get_contents('http://example.com'); 
libxml_use_internal_errors(true); 
$doc = new DOMDocument(); 
$doc->loadHTML($html); 
//get the element you want to append to 
$descBox = $doc->getElementById('element1'); 
//create the fragment 
$fragment = $doc->createDocumentFragment(); 
//add content to fragment 
$fragment->appendXML('<div>This is a test element.</div>'); 
//actually append the element 
$descBox->appendChild($fragment); 

請注意,使用JavaScript添加的所有元素都將無法訪問到PHP。

2

還可以追加這樣

$html = ' 
<html> 
    <body> 
     <ul id="one"> 
      <li>hello</li> 
      <li>hello2</li> 
      <li>hello3</li> 
      <li>hello4</li> 
     </ul> 
    </body> 
</html>'; 
libxml_use_internal_errors(true); 
$doc = new DOMDocument(); 
$doc->loadHTML($html); 
//get the element you want to append to 
$descBox = $doc->getElementById('one'); 
//create the element to append to #element1 
$appended = $doc->createElement('li', 'This is a test element.'); 
//actually append the element 
$descBox->appendChild($appended); 
echo $doc->saveHTML(); 

不要忘記saveHTML最後一行