有一个项目要获取页面中所有img标签中的图片地址,这里我们使用到了preg_match_all正则函数,然后看我下面的一些参数即可实现了。
例
代码如下
复制代码
$ext = 'jpg|jpeg|gif|bmp|png';//罗列图片后缀从而实现多扩展名匹配
$str = '
';$img_list = array(); //这里存放结果map
$img_list = img_match($str,$ext);
print_r($img_list); //查看结果变量
/*
* $str,要进行处理的内容
* $ext,要匹配的扩展名
*/
function img_match($str,$ext){
$list = array(); //这里存放结果map
$c1 = preg_match_all('//', $str, $m1); //先取出所有img标签文本
for($i=0; $i
$c2 = preg_match_all('/(w+)s*=s*(?:(?:(["'])(.*?)(?=2))|([^/s]*))/', $m1[0][$i], $m2); //匹配出所有的属性
for($j=0; $j
$list[$i][$m2[1][$j]] = !empty($m2[4][$j]) ? $m2[4][$j] : $m2[3][$j];
}
}
return $list;
}
?>
效果如下
再扯蛋一下,还是正则取指定字符中的内容
代码如下
复制代码
$str = preg_match_all('/(original-title=).*?(>)/is', $str,$array);
很简单吧。
isU是大小写分的意思,这里s还有则不包括换行符而U是反转了匹配数量的值使其不是默认的重复,大概就是这样了个体我们看文章。
正则后面的/(.*)/isU ,“isU”参数代表什么意思?
这是正则中的修正符.
i是同时查找大小写字母,
s是圆点(.)匹配所有字符,包括换行符.如果没有设定s,则不包括换行符.
U是反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复
例
preg_match 兼容的正则表达式语法中 b 代表单词边界
所以:下面应该是可以???
代码如下
复制代码
$a="test,admin,abc";
$b="te";
$exist=preg_match("/b{$b}b/",$a);
if($exist)
{
echo "存在";
}else
{
echo "不存在";
}
看一下相关说明
int preg_match ( string pattern, string subject [, array matches [, int flags]] );
preg_match() 返回 pattern 所匹配的次数。要么是 0 次