您的位置:首页 > 编程语言 > PHP开发

PHP与正则表达式 2 :一些修饰符与preg_match_all

2008-01-18 23:17 633 查看
看到了这个函数preg_match_all( ) ,它的作用是进行全局正则表达式匹配

于是在手册上看到了这个例子:


<?php


preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",


"<b>example: </b><div align=left>this is a test</div>",


$out, PREG_PATTERN_ORDER);




/*


<


一个或多个未包含‘〉’的字符


>




零个或多个字符




〈/




一个或多个未包含‘〉’的字符




>




*/




print_r ($out);




?>



上面那个正则表达式的意义已经写在程序里了。

结果是:


Array


(


[0] => Array


(


[0] => <b>example: </b>


[1] => <div align="left">this is a test</div>


)




[1] => Array


(


[0] => example:


[1] => this is a test


)




)



这个可以理解。但是我忽然注意到了程序里面的那个U

于是就在想这个U是干什么的?当我把U去掉的结果是:


Array


(


[0] => Array


(


[0] => <b>example: </b><div align="left">this is a test</div>


)




[1] => Array


(


[0] => example: <div align="left">this is a test


)




)



很有意思,于是我以为这个U的作用是不理会前面的语句。

但是有些乱,于是Google了一下,不得不说Google这个没有搜到,最后是在百度上查到的。

其实我还是喜欢Google。。。^_^

查看结果如下:


修饰符


意 义




/regexp/i


不区分大小写的匹配




/regexp/s


使句点(.)匹配任何字符,包括换行符( )




/regexp/x


从模式中删除空白符和注释




/regexp/m


使^匹配换行符 ( )之后的内容,美元符号($)匹配换行符 ( )之前的内容




/regexp/e


如果替换字符串是PHP代码,使用eval()执行该代码来得到实际的替换字符串。




PHP的Perl兼容正则表达式函数也支持在Perl中不支持的其他修饰符,如表4-13所示:




表4-13:其他的PHP标志




修饰符


意 义




/regexp/U


颠倒子模式的贪婪性;*和+尽可能少地匹配而不是尽可能多。




/regexp/u


把模式字符串当作UTF-8编码对待




/regexp/X


如果一个反斜杠之后跟着没有特殊意义的字符,将产生一个错误




/regexp/A


把锚定位在字符串的开头就像模式中有^一样




/regexp/D


使$字符仅匹配一行的末尾




/regexp/S


使表达式解析器更加小心地检查模式的结构,使得第二次运行时(如在一个循环中)加快速度

原来还有修饰符,呵呵,

学到了,记下来吧。。嗯。。嘿嘿。。。Good Good Study,Day Day Up!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: