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 回答