/ PHP

php正则表达式使用心得

今天第一次自己写正则,果真是实践过之后印象才会深刻。。。。。

第一个要记录的是有关正则的,其中有一步是匹配一段任意字符,包括回车换行,直到出现特定字符串。

按照网上的一些教程,我写出的正则表达式是

.+?

但是却发现不能匹配,原因是.不能匹配换行符,于是google了一下下,发现也有前人遇到此问题,解决方法是

[\s\S]+?

注:+?是惰性限定符,功能是 重复1次或更多次,但尽可能少重复。

轻松搞定。

第二个是php中使用正则。

我只用到了一个函数preg_match_all($preg,$str,$arr);

这个函数有3个参数,第一个是正则表达式,第二个是要匹配的字符串,第三个是可选参数,是一个数组,用于保存匹配的值。

如果匹配成功,$arr数组里面除了第一个元素($arr[0]),其他用于存放匹配的字符串

例如:

$url="http://taotao.qq.com/cgi-bin/emotion_cgi_msglist?uin=$qq&ftype=0&sort=0&pos=$start&num=20"; $preg = "/</a><span\sid="\w+">([^<]+)</span>[\s\S]+?(\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d)/"; $html = file_get_contents($url); $arr=array(); preg_match_all($preg,$html,$arr); $len=count($arr[1]); for($i=0;$i<$len;$i++) { echo "".$arr[2][$i]."".$arr[1][$i].""; }

这样就把所有匹配到的内容输出来了。

思维很乱,将就看吧。

php正则表达式使用心得
Share this