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