2016-11-19 3 views
0

я следующие:PHP: Получение элементов DOM по имени класса

<div id="content"> 
<div class="content-top">bla</div> 
<div class="inner text-inner"> 
bla bla bla 
</div> 
</div> 

и PHP:

$page = file_get_contents('http://www.example.com/test'); 
@$doc = new DOMDocument(); 
@$doc->loadHTML($page); 
$node = $doc->getElementById('content'); 

Как я могу изменить $node = $doc->getElementById('content'); так что я могу мишенью <div class="inner text-inner">?

ответ

2

Вы можете использовать XPath, чтобы легко достичь этого.

$page = file_get_contents('http://www.example.com/test'); 
@$doc = new DOMDocument(); 
@$doc->loadHTML($page); 

$xpath = new DomXPath($doc); 

$nodeList = $xpath->query("//div[@class='inner text-inner']"); 
$node = $nodeList->item(0); 

// To check the result: 
echo "<p>" . $node->nodeValue . "</p>"; 

Это Выведет:

bla bla bla 
+0

Когда я пытаюсь сохранить в файле // Записать запись $ запись = $ _SERVER [ 'DOCUMENT_ROOT']. '/моя папка/' . 'контрольная работа' . '.html'; $ file = fopen ($ record, "w"); $ txt = $ doc-> saveHtml ($ nodeList); fwrite ($ file, $ txt); fclose ($ file); Это предупреждение: DOMDocument :: saveHTML() ожидает, что параметр 1 будет DOMNode, объект указан в .. и ничего не сохраняется в файле test.html –

+0

@ Gorna-Bania, потому что '$ nodeList' является объектом DOMNodeList. Попробуйте изменить это: '$ txt = $ doc-> saveHtml ($ nodeList-> item (0));' – nanocv