迷惑不解的preg_replace

sstower 2011-06-09 03:58:40
我看到这样一个例子:

$_response_body = preg_replace('#(<\s*title[^>]*>)(.*?)(<\s*/title[^>]*>)#is', '$1$3', $_response_body);

迷惑不解的是#字符,#is 在这里的作用是什么,下文还有#si,有没有人告知,感谢!
...全文
148 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlpower 2011-06-17
  • 打赏
  • 举报
回复
“#”号是在你此正则表达式中的“定界符”,表示这中间是你的正则表达示,而不是普通字符

正则定符不是只有"/",而是任何不是字母、数字或反斜线(\)的字符都可以作为定界符。如果作为定界符的字符必须被用在表达式本身中,则需要用反斜线转义。自php4.0.4起,也可以使用Perl风格的 (),{},[] 和 <> 匹配定界符。

如下面的写法都是合法的:

$str ='abc123def5g';
preg_match_all('/\d+/i', $str, $arr1);
preg_match_all('|\d+|i', $str, $arr2);
preg_match_all('(\d+)i', $str, $arr3);
preg_match_all('{\d+}i', $str, $arr4);
preg_match_all('[\d+]i', $str, $arr5);
preg_match_all('<\d+>i', $str, $arr6);


------------------

后面的“i”和“s”是“正则模式匹配符”。
i:PCRE_CASELESS 如果设定此修正符,模式中的字符将同时匹配大小写字母。
s:PCRE_DOTALL 如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。

如果还想了解其它关于“模式匹配符”的知识的话,可以看下我的博客
http://hi.baidu.com/tianliao1988/blog/item/ddc2ba1839909e6edbb4bd56.html
可能对你有用。。
一起混吧 2011-06-17
  • 打赏
  • 举报
回复
S: 如果一个模式将被使用多次, 使用长些时间分析他来来提高匹配的速度. 如果使用这个修饰符,则进行额外的分析. 目前, 研究模式仅用于非锚模式,没有一个固定的开始字符.

//这个不是经常用。不用太在意。
sstower 2011-06-17
  • 打赏
  • 举报
回复
举例:
$_response_body = preg_match_all('#(<(.*?)#is', $_response_body,$matches);

如果:$_response_body = "123456\n789";
加s 匹配结果是 123456\n789
不加s 匹配结果是 123456

但对于S是怎么回事呢?



sstower 2011-06-17
  • 打赏
  • 举报
回复
在网上找了一下,没有找到S的解释,
S表示不换行,这个不太明白
s 将字符串视为单行。回车符作为普通字符。这个能理解
ispax 2011-06-12
  • 打赏
  • 举报
回复
#为定界符
i与s正则字符,i表示不分大小写
S表示不换行
kaifadi 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jordan102 的回复:]

i是不区分大小写。
s 将字符串视为单行。回车符作为普通字符。
[/Quote]
s的解释不对吧!

应该是/s的模式中的圆点元字符(.)匹配所有的字符,包括换行符。如果没有s参数,.不能匹配/n
一起混吧 2011-06-09
  • 打赏
  • 举报
回复
i是不区分大小写。
s 将字符串视为单行。回车符作为普通字符。
床上等您 2011-06-09
  • 打赏
  • 举报
回复
这个你需要 google 或者查阅更加多的资料
sstower 2011-06-09
  • 打赏
  • 举报
回复
后面的 is 是这个正则的一些参数等
----------------------------
这些参数有什么作用,最好举例说明
床上等您 2011-06-09
  • 打赏
  • 举报
回复
两头的 # 是定界符,你可以使用 / @ 等代替。

#is 里的#是定界的结果,后面的 is 是这个正则的一些参数等

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧