当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP技巧:preg_replace 修饰符

PHP
php 接口类与抽象类的实际作用
php google或baidu分页代码
完美解决PHP中文乱码
PHP Session变量不能传送到下一页的解决方法
Ajax+PHP 边学边练之四 表单
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
php中$this->含义分析
php操作sqlserver关于时间日期读取的小小见解
php 获取客户端的真实ip
php读取html并截取字符串的简单代码
PHP MYSQL乱码问题,使用SET NAMES utf8校正
php 一元分词算法
php smarty模版引擎中的缓存应用
PHP5 面向对象(学习记录)
php zip文件解压类代码
Asp.net 文本框全选的实现
php 无限分类的树类代码
又一个php 分页类实现代码
PHPMyadmin 配置文件详解(配置)
Ajax+PHP边学边练 之五 图片处理

PHP技巧:preg_replace 修饰符


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

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

下面是当前规则表达式里可用的修饰. 括号内的名字是那些修饰符的内部 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. 目前还没有其他的控制特征