Возможные дубликаты:
сканирование 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"]'); // ...