正则表达式,用于查找PHP中不是表情符号的图像

时间:2012-11-12 11:06:03

标签: php regex preg-match

我使用此PHP代码在论坛帖子中搜索图像:

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

这将在htmltext中找到第一个图像。 但是,我想跳过任何smilie图标的图像。所有的笑脸图标都在文件夹/ forum / smilies /中。 如何从正则表达式中排除此文件夹?

1 个答案:

答案 0 :(得分:3)

尝试解析HTML时,建议不要使用正则表达式。您可以在同一问题上查看this answer

这样可以解决问题:

$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