PHP preg_match_all详解

int preg_match_all ( string pattern, string subject, array &matches [, int flags] )

最近在研究爬虫,对抓取的页面进行解析,需要用到这个函数。由于之前对这个函数只是一知半解,结果被狠狠地坑了一把。

flags 是可省略的,默认值是PREG_PATTERN_ORDER,还可以有其他值,这个会影响matches的内容形式。但这个不重要,只需知道缺省flags时,matches是什么样子就可以了。

pattern和subject就不多说了,重点说一说matches。

matches(注意这里是引用)是一个二维数组,matches[0] 是整个pattern匹配的结果。matches[1] 是第一个子模式(正则表达式中的子模式,就是圆括号括起来的部分)匹配的结果,matches是 第二个子模式的匹配结果。

而且,这个函数的返回值是整个pattern匹配到的结果数量。

现举例说明:

<?php  
	$pattern = "/<[^>]+>(.*)<\/[^>]+>/U";
	$subject = "<b>example:</b><div align = left>this is a test</div>";
    preg_match_all($pattern,$subject,$out);
	print_r($out);	
?>

注意$pattern中标红的就是子模式。


注意这个结果的形式,array[0]是整个pattern匹配到的结果,array[1]是pattern中子模式 (.*) 所匹配到的结果。但是array[1]匹配的结果是和array[0]中的结果相对应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值