笑脸我在一个论坛帖子这个PHP代码搜索图片图片:正则表达式查找不在PHP
if(preg_match("~<img.*src=\"(.*)\".*/>~isU", $htmltext, $imatch))
{
$imageurl = $imatch[1];
}
这会找到将htmlText第一张图像。 但是,我想跳过任何图像是smilie图标。所有的笑脸图标都放在文件夹/ forum/smilies /中。 如何从正则表达式中排除此文件夹?
笑脸我在一个论坛帖子这个PHP代码搜索图片图片:正则表达式查找不在PHP
if(preg_match("~<img.*src=\"(.*)\".*/>~isU", $htmltext, $imatch))
{
$imageurl = $imatch[1];
}
这会找到将htmlText第一张图像。 但是,我想跳过任何图像是smilie图标。所有的笑脸图标都放在文件夹/ forum/smilies /中。 如何从正则表达式中排除此文件夹?
当您尝试解析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
是含有所有非similey img
的src
给定$htmltext
内的阵列。
使用preg_match_all代替preg_match来查找所有图像。 –
不要使用正则表达式来解析HTML,请使用DOM解析器。 – Barmar