如何匹配以pics.domain.com
开头的所有图片?
我尝试了什么
preg_match_all('/<img .*src=(pics.domain.com*)["|\']([^"|\']+)/i', $row['story'], $matches);
答案 0 :(得分:4)
使用DOMDocument
并简单地遍历每个<img>
标记;然后使用parse_url()
查找每个图像路径的主机:
$doc = new DOMDocument;
libxml_use_internal_errors(true);
$doc->loadHTML($row['story']);
libxml_clear_errors();
foreach ($doc->getElementsByTagName('img') as $img) {
if (parse_url($img->getAttribute('src'), PHP_URL_HOST) === 'pics.domain.com') {
echo "Yay, image found\n";
}
}
答案 1 :(得分:1)
我过去使用过正则表达式,它也可以在<img>
标记之外使用。
'@[\'"](https?://)?([^\.][^\'"]*?)(/)?([^\'"/]*?)\.(jpg|jpeg|png|gif|bmp)[\'"]@'
更具体的版本:
'@[\'"](https?://)?pics\.domain\.com[^\'"]*?\.(jpg|jpeg|png|gif|bmp)[\'"]@'
英文:
[开始引用](http或https或两者都没有)pics.domain.com(任何非引用的东西)(某些图片扩展名)[end quote]