`
opensuse
  • 浏览: 183434 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • php
阅读更多

看到了这个函数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 =& gt;  Array
        (
            [
0 =& gt;  < b > example :   </ b >
            [
1 =& gt;  < div align = " left " > this is a test </ div >
        )

    [
1 =& gt;  Array
        (
            [
0 =& gt; example :  
            [
1 =& gt; this is a test
        )

)
 

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

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

Array
(
    [
0 =& gt;  Array
        (
            [
0 =& gt;  < b > example :   </ b >< div align = " left " > this is a test </ div >
        )

    [
1 =& gt;  Array
        (
            [
0 =& gt; 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!!!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics