Регулярное выражение для получения содержимого div-класса в php

Возможный дубликат:
PHP DOMDocument, поиск определенных тегов
Как анализировать и обрабатывать HTML с помощью PHP?

Есть ли специальный синтаксис для получения вложенного элемента div с уникальным именем класса в RegExp в php. У меня есть синтаксис вроде

<div style="demo"> <div class="row"> <div title="abc@examples.com" class="text">ABC</div> </div> <div class="row"> <div title="pqr@examples.com" class="text">PQR</div> </div></div> 

здесь, как мы можем получить все электронные письма с помощью RegExp и preg_match_all ().

Solutions Collecting From Web of "Регулярное выражение для получения содержимого div-класса в php"

 preg_match_all("/<div title=\"(.*)\" class=\"text\">/", $subject, $matches); 

Если электронные письма – единственные данные, которые вы хотите, есть лучшие регулярные выражения для соответствия только писем. См. http://fightingforalostcause.net/misc/2006/compare-email-regex.php

Regex плохо разбираются в HTML. Используйте DOM Parser и этот XPath:

 //div[@style="demo"]/div[@class="row"]/div[@class="text"]/@title 

Если class="text" является эксклюзивным для разделов, которые вы хотите сопоставить, вы также можете сделать

 //div[@class="text"]/@title 

Также см:

 <?php $html = '<div style="demo"> <div class="row"> <div title="abc@examples.com" class="text">ABC</div> </div> <div class="row"> <div title="pqr@examples.com" class="text">PQR</div> </div></div> '; $doc = DOMDocument::loadHTML($html); $xpath = new DOMXPath($doc); foreach($xpath->query('//div[@style="demo"]/div[@class="row"]/div[@class="text"]/@title') as $div){ echo $div->value . PHP_EOL; } 

Это предполагает, что атрибуты класса точно такие (дословно), но я надеюсь, что вы получите эту идею.