Если вы пытаетесь извлечь некоторые данные из документа HTML, вы не должны использовать регулярные выражения.
Вместо этого вам следует использовать анализатор DOM: они созданы именно для этого.
В PHP вы должны использовать класс DOMDocument
и его метод DOMDocument::loadHTML()
для загрузки содержимого HTML.
Затем вы можете работать с такими методами, как:
Вы даже можете работать с DOMXpath
выполнять запросы XPath к вашему HTML-контенту, что позволит вам искать в нем практически все.
В вашем случае, я полагаю, что-то подобное должно сработать.
Сначала поместите ваш HTML-контент в строку (или используйте DOMDocument::loadHTMLFile()
) :
$html = <<<HTML
<p>hello</p>
<div>
<div id="MustBeInThisId">
<div class="ValueFromThisClass">
The Value I need
</div>
</div>
<div>
HTML;
Затем загрузите его в DOMDocument
экземпляр:
$dom = new DOMDocument();
$dom->loadHTML($html);
Instanciate объект DOMXPath
и использование его для запроса вашего объекта DOM:
Мое выражение XPath может быть немного более сложным, чем необходимо ... Я не очень хорош с этими ...
$xpath = new DOMXPath($dom);
$items = $xpath->query('//div[@id="MustBeInThisId"]/div[@class="ValueFromThisClass"]');
И, наконец, поработаем с результатами этого запроса:
if ($items->length > 0) {
var_dump( trim( $items->item(0)->nodeValue ) );
}
И вот ваш результат:
string 'The Value I need' (length=16)