[英]Regular expression, how to find all A tags which do not contain tag IMG inside it?
[英]Regular expressions : find all div tags which contain tag img
我需要查找并替换所有包含标签img的div标签,我尝试了一些不成功的正则表达式:(这是我尝试过的正则表达式的示例: /(<div class="indicator"[^<]*>.*<img[^>]*>[^<]*</div>)/g
请提供帮助
谢谢
如果您有可能像dystroy所说的那样嵌套div div图像,那么用正则表达式就不能正确完成,因为它实际上不是常规语言。 可能您应该使用DOM。 这是相关的: 如何在PHP中解析和处理HTML / XML?
最好不要尝试使用RegEx解析HTML,因为它容易出错。 使用DOM,您可以执行以下操作:
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$nodeList = $doc->getElementsByTagName('div');
for($i=0; $i < $nodeList->length; $i++) {
$node = $nodeList->item($i);
$children = $node->childNodes;
foreach ($children as $child) {
if ($child->nodeName == 'img') {
echo "DIV tag contains IMG tag\n";
break;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.