1
我使用這個正則表達式匹配所有圖像。我如何重寫它以最終匹配所有圖像而不是</a>
?正則表達式匹配所有沒有鏈接的圖像
preg_match_all ("/\<img ([^>]*)\/*\>/i", $text, $dst);
我使用這個正則表達式匹配所有圖像。我如何重寫它以最終匹配所有圖像而不是</a>
?正則表達式匹配所有沒有鏈接的圖像
preg_match_all ("/\<img ([^>]*)\/*\>/i", $text, $dst);
我不建議使用正則表達式解析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')]);
}
}
你可以使用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');
}
你可能不應該使用正則表達式來解析HTML,在PHP中有HTML解析器。 – Qtax
你的意思是你想找到所有沒有'a'作爲父母的'img'?你有一些示例輸入HTML嗎? –
是的,這正是我所想的 – Dikobraz