迷惑不解的preg_replace 我看到这样一个例子: $_response_body = preg_replace('#(<\s*title[^>]*>)(.*?)(<\s*/title[^>]*>)#is', '$1$3', $_response_body);迷惑不解的是#字符,#is 在这里的作用是什么,下文还有#si,有没有人告知,感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 两头的 # 是定界符,你可以使用 / @ 等代替。#is 里的#是定界的结果,后面的 is 是这个正则的一些参数等 这个你需要 google 或者查阅更加多的资料 s的解释不对吧!应该是/s的模式中的圆点元字符(.)匹配所有的字符,包括换行符。如果没有s参数,.不能匹配/n #为定界符i与s正则字符,i表示不分大小写S表示不换行 在网上找了一下,没有找到S的解释,S表示不换行,这个不太明白s 将字符串视为单行。回车符作为普通字符。这个能理解 举例:$_response_body = preg_match_all('#(<(.*?)#is', $_response_body,$matches);如果:$_response_body = "123456\n789";加s 匹配结果是 123456\n789不加s 匹配结果是 123456但对于S是怎么回事呢? “#”号是在你此正则表达式中的“定界符”,表示这中间是你的正则表达示,而不是普通字符正则定符不是只有"/",而是任何不是字母、数字或反斜线(\)的字符都可以作为定界符。如果作为定界符的字符必须被用在表达式本身中,则需要用反斜线转义。自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可能对你有用。。 sql+mysql 随机数据读取---进阶问题 问一个日文编码显示的的问题,不知道程序在XP上运行,没有问题,在LINUX上运行去出问题. 求助 -网页框架疑难问题(在线等) mysql排名问题 又一数据库连接问题 ereg("^php[0-9A-Za-z_.-]+$", basename($attachment))前面的php是什么意思? chr(39)是什么意思? 关于计数器的问题! 一个关于 session 的问题 小菜鸟跪求大神搭救 问一个很小问题 望高手速度解答 在线等... 大家能在html里面输出数据库对应的信息吗 在线研究...
i与s正则字符,i表示不分大小写
S表示不换行
S表示不换行,这个不太明白
s 将字符串视为单行。回车符作为普通字符。这个能理解
$_response_body = preg_match_all('#(<(.*?)#is', $_response_body,$matches);如果:$_response_body = "123456\n789";
加s 匹配结果是 123456\n789
不加s 匹配结果是 123456但对于S是怎么回事呢?
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
可能对你有用。。