我使用此PHP代码在论坛帖子中搜索图像:
if(preg_match("~<img.*src=\"(.*)\".*/>~isU", $htmltext, $imatch))
{
$imageurl = $imatch[1];
}
这将在htmltext中找到第一个图像。 但是,我想跳过任何smilie图标的图像。所有的笑脸图标都在文件夹/ forum / smilies /中。 如何从正则表达式中排除此文件夹?
答案 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
。