匹配所有图像以pics.domain.com开头

时间:2013-04-10 02:38:27

标签: php regex

如何匹配以pics.domain.com开头的所有图片?

我尝试了什么

preg_match_all('/<img .*src=(pics.domain.com*)["|\']([^"|\']+)/i', $row['story'], $matches);

2 个答案:

答案 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]