2

で始まるすべての画像を一致させるにはどうすればよいpics.domain.comですか?

私が試したこと

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

2 に答える 2

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";
    }
}
于 2013-04-10T02:48:23.220 に答える
2

過去に正規表現を使用したことがありますが、<img>タグの外でも機能します。

'@[\'"](https?://)?([^\.][^\'"]*?)(/)?([^\'"/]*?)\.(jpg|jpeg|png|gif|bmp)[\'"]@'

より具体的なバージョン:

'@[\'"](https?://)?pics\.domain\.com[^\'"]*?\.(jpg|jpeg|png|gif|bmp)[\'"]@'

英語で:

[引用の開始](http または https またはどちらでもない)pics.domain.com(引用ではないもの)(画像の拡張子)[引用の終了]

于 2013-04-10T02:41:59.697 に答える