Извлечь DOM-элементы из строки, в PHP

Возможные дубликаты:
сканирование html-страницы с использованием php?
Лучшие методы анализа HTML

У меня есть одна строковая переменная в моем php-скрипте, который содержит html-страницу. Как я могу извлечь DOM-элементы из этой строки?

Например, в этой строке '<div class="someclass">text</div>' , я хочу получить переменную 'text'. Как я могу это сделать?

Вам нужно использовать класс DOMDocument и, более конкретно, его метод loadHTML , загрузить вашу HTML-строку в объект DOM.

Например :

 $string = <<<HTML <p>test</p> <div class="someclass">text</div> <p>another</p> HTML; $dom = new DOMDocument(); $dom->loadHTML($string); 

После этого вы сможете манипулировать DOM, используя, например, класс DOMXPath для выполнения запросов XPath.

Например, в вашем случае вы можете использовать что-то на основе этой части кода:

 $xpath = new DOMXpath($dom); $result = $xpath->query('//div[@class="someclass"]'); if ($result->length > 0) { var_dump($result->item(0)->nodeValue); } 

Здесь вы получите следующий результат:

 string 'text' (length=4) 

В качестве альтернативы вместо DOMDocument вы также можете использовать simplexml_load_string и SimpleXMLElement::xpath – но для сложных манипуляций я обычно предпочитаю использовать DOMDocument .

Посмотрите на DOMDocument и DOMXPath .

 $DOM = new DOMDocument(); $DOM->loadHTML($str); $xpath = new DOMXPath($DOM); $someclass_elements = $xpath->query('//[@class = "someclass"]'); // ...