可能重复:
PHP DOMDocument, finding specific tags
How to parse and process HTML with PHP?
在php中的RegExp中是否有任何特殊的语法来获取具有唯一类名的嵌套div元素。 考虑我有一个像
这样的语法<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()检索所有emailid。
答案 0 :(得分:5)
正则表达式不善于解析HTML。使用DOM Parser和此XPath:
//div[@style="demo"]/div[@class="row"]/div[@class="text"]/@title
如果class="text"
仅限于您想要匹配的div,您也可以
//div[@class="text"]/@title
另见:
答案 1 :(得分:1)
preg_match_all("/<div title=\"(.*)\" class=\"text\">/", $subject, $matches);
如果电子邮件是您想要的唯一数据,则仅有匹配电子邮件的更好的正则表达式。见http://fightingforalostcause.net/misc/2006/compare-email-regex.php
答案 2 :(得分:0)
<?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;
}
这假设类属性正是那些(逐字),但我希望你能理解。