0

このPHPコードを使用して、フォーラムの投稿で画像を検索します。

if(preg_match("~<img.*src=\"(.*)\".*/>~isU", $htmltext, $imatch))
{
    $imageurl = $imatch[1];
}

これにより、htmltextの最初の画像が見つかります。ただし、スマイリーアイコンである画像はスキップしたいと思います。すべてのスマイリーアイコンは、フォルダ/ forum /smilies/にあります。このフォルダを正規表現から除外するにはどうすればよいですか?

4

1 に答える 1

3

HTMLを解析するときに正規表現を使用することはお勧めしません。この同じ問題について、この回答を見ることができます。

これでうまくいきます:

$dom = new DOMDocument();
$dom->loadHTML($htmltext);
$images = $dom->getElementsByTagName('img');
$valid  = array();
foreach ($images as $image) {
    $src = $image->getAttribute('src');
    if ($src !== '' && strpos($src, '/forum/smilies/') !== 0) {
        $valid[] = $src;
    }
}
print_r($valid);

$valid指定された内のimgすべての非類似を含む配列です。src$htmltext

于 2012-11-12T11:16:19.350 に答える