我使用此正则表达式来匹配所有图像。我如何重写它以匹配最终没有</a>
的所有图像?
preg_match_all ("/\<img ([^>]*)\/*\>/i", $text, $dst);
答案 0 :(得分:1)
我不建议使用正则表达式来解析html字符串。
但是,您可能希望尝试使用DOM首先遍历所有图像并将它们存储在数组中。
foreach ($dom->getElementsByTagName('img') as $img) {
$array[$img->getAttribue('src')]=1;
}
然后遍历所有链接并尝试在里面找到要从阵列中删除的图像。
foreach ($dom->getElementsByTagName('a') as $a) {
//loop to catch multiple IMGs in LINKS
foreach ($a->getElementsByTagName('img') as $img) {
unset($array[$img->getAttribue('src')]);
}
}
答案 1 :(得分:1)
你可以使用domDocument而不是正则表达式,这里的语法可能不正确,但它会给你一个想法。
$dom = new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
$images_array = array();
foreach ($images as $image) {
if ($image->parentNode->nodeName != 'a')
echo $images_array = $image->getAttribute('src');
}