Вы не должны анализировать (x) html с регулярными выражениями. Используйте DOM.
Я новичок в xpath, но такой должен работать:
//div[@class='test']
Это выбирает все div с классом 'test'. Вам нужно будет загрузить html в объект DOMDocument, затем создать связанный с ним объект DOMXpath и вызвать его метод execute()
, чтобы получить результаты. Он вернет объект DOMNodeList.
Конечный код выглядит примерно так:
$domd = new DOMDocument();
$domd->loadHTML($your_html_code);
$domx = new DOMXPath($domd);
$items = $domx->execute("//div[@class='test']");
После этого ваш div находится в $items->item(0)
.
Это непроверенный код, но если я правильно помню, он должен работать.
Обновление , забыл, что вам нужен контент.
Если вам нужен текст text (без тегов), вы можете просто позвонить $items->item(0)->textContent
. Если вам также нужны теги, вот эквивалент innerHTML javascript для PHP DOM:
function innerHTML($node){
$doc = new DOMDocument();
foreach ($node->childNodes as $child)
$doc->appendChild($doc->importNode($child, true));
return $doc->saveHTML();
}
Вызовите его с $items->item(0)
в качестве параметра.