当前位置: 首页 > 图文教程 > 网络编程 > PHP > Pattern Modifiers - 规则表达式的修饰符

PHP
PHP学习中遇到的问题,请高手帮忙 - PHPchina
如何获取IIS虚拟目录的绝对路径 - PHPchina
常常说的SQL注入是怎么做的? - PHPchina
怎么对网站的Alexa排名的数据的采集? - PHPchina
遇到一个session丢失的问题。打开含有mediaplayer播放器的页面,会导致session丢失 -
做小偷遇到一个基础问题.请指教 - PHPchina
php5如何连接ACCESS 2003 - PHPchina
帮找下错误 - PHPchina
split 函数的一个问题 - PHPchina
一个全站系统的数据库设计问题,望大家都来帮帮忙 - PHPchina
分享我的PHP配置心得包含MYSQL5乱码解决 - PHPchina
深入浅出分析Linux设备驱动程序中断 (1)(3)
深入浅出分析Linux设备驱动程序中断 (1)(2)
深入浅出分析Linux设备驱动程序中断 (1)
OpenSSH可实现一次性自动管理多台服务器
如何利用程序循环来控制Perl脚本流程
PHP5应用笔记之Cookie实用攻略(上)
从失败中涉取经验 网站设计的十种常见错误
连载1:利用PHP创建由Oracle 驱动的SOAP服务
连载2:利用PHP创建由Oracle 驱动的SOAP服务

PHP 中的 Pattern Modifiers - 规则表达式的修饰符


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 117 ::
收藏到网摘: n/a

PatternModifiers-规则表达式的修饰符

下面是当前规则表达式里可用的修饰.括号内的名字是那些修饰符的内部PCRE名字.

i(PCRE_CASELESS)
如果设置了这个修饰符,则表达式不区分大小写.

m(PCRE_MULTILINE)
默认的,PCRE认为目标字符串值是单行字符串(即使他确实包含多行).行开始标记(^)只匹配字符串的开始部分,而行结束标记($)只匹配字符串的尾部,或者一个结束行(除非指定E修饰符).这个和Perl里面一样.

如果设定了这个修饰符,行开始和行结束结构分别匹配在目标字符串任何新行的当前位置后面的或者以前的,和每一个开始和结束一样.这个等于Perl里面的/m修饰符.如果目标字符串没有"n"字符,或者模式里没有^或$,这个修饰符不起作用.

s(PCRE_DOTALL)
如果设置这个修饰符,模式里的一个"点"将匹配所有字符,包括换行.没有他,换行将被排除在外.这个修饰符等同于Perl里面的/s修饰符.一个相反的类型,例如[^a]将总是匹配换行字符,而不管这个修饰符的限制.

x(PCRE_EXTENDED)
如果设置这个修饰符,模式里面的空格数句将会被全部忽略,除非用转义符或者一个字符的内部类型,还有所有字符类型外的未转义的#号之间的也被忽略.这个等同于Perl里面的/x修饰符,这样可以复杂的模式里面加入注释.注意,只适用于数据字符.空格字符将不会在指定的模式字符指定顺序中出现。

e
如果设置这个修饰符,preg_replace()将在替换值里进行正常的涉及到\的替换,等同于在PHP代码里面一样,然后用于替换搜索到的字符串.

只在preg_replace()里使用这个修饰符;其它PCRE函数忽略他.

A(PCRE_ANCHORED)
如果设置这个修饰符,模式被强制为锚(anchored),也就是说,他将值匹配搜索字符串的开始.这个效果可以通过恰当的模式结构自身来实现,那是在Perl里面的唯一途径.

D(PCRE_DOLLAR_ENDONLY)
如果设置这个修饰符,则模式里的$修饰符将仅匹配目标字符串里的尾部.没有这个修饰符,$字符也匹配新行的尾部(但是不再新行的前面).如果设置了m修饰符则忽略这个修饰符.在Perl里面没有类似的.

S
如果一个模式将被使用多次,使用长些时间分析他来来提高匹配的速度.如果使用这个修饰符,则进行额外的分析.目前,研究模式仅用于非锚模式,没有一个固定的开始字符.

U(PCRE_UNGREEDY)
这个修饰符翻转数量的"greediness",使得默认不被greedy,但是如果你紧跟问号(?),则可以greedy.这个和Perl不兼容.这个也可以通过在模式里面的(?U)修饰符得到.

X(PCRE_EXTRA)
这个修饰符打开额外的功能,这些和Perl不兼容.任何模式里面的后面带字符但没有特殊意义的反斜杠将引起错误,从而储备这些联合用于将来的扩充.默认的,在Perl里面,反斜杠后面有无意义的字符被当成正常的literal.目前还没有其他的控制特征