免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2691 | 回复: 6
打印 上一主题 下一主题

请问一个preg_match的正则问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-21 18:05 |只看该作者 |倒序浏览
匹配内容带有多个换行的任何文本内容的正则怎么写?

论坛徽章:
0
2 [报告]
发表于 2007-08-21 22:54 |只看该作者
$var="aaa





aa";
echo str_replace("\r","1",$var);

论坛徽章:
0
3 [报告]
发表于 2007-08-22 09:58 |只看该作者
谢谢。我试过这样是可以的:
$var="a    <atd>
                aaa


老师打分卡是否\开放的看
s我们

aa测试</font></td>";
preg_match("/<atd>(.*)<\/font><\/td>/is",$var,$arr);
echo "<pre>";
print_r($arr);
echo "</pre><br>";

论坛徽章:
0
4 [报告]
发表于 2007-08-22 10:47 |只看该作者
哪位朋友可以解析一下正则后面的/(.*)/isU  ,“isU”参数代表什么意思?

论坛徽章:
0
5 [报告]
发表于 2007-08-22 10:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2007-08-22 16:16 |只看该作者
谢谢。不太理解U的意思,(.*?)这样,匹配出来也是一样啊

论坛徽章:
0
7 [报告]
发表于 2007-08-22 17:08 |只看该作者
唉,PHP 手册中文版翻译得真是……(估计又要被人说是「纯理科生」翻译的了)
U = 反转「贪婪模式」

默认的规则表达式是用「贪婪模式」匹配的,例如下面的字串:



  1. <b>This text is bold</b> <b>This text is bold too.</b>
复制代码



你想要两个匹配结果,一个「This text is bold」,一个「This text is bold too.」。

如果用 /\<b\>(.*)\<\/b\>/ 来匹配的话,那么结果将会是一个,「This text is bold</b> <b>This text is bold too.」,因为「贪婪模式」使用的是「最大化匹配结果」的策略。可以理解为,从后推到前。如果想要前面的结果,必须用「非贪婪模式」。标准作法是在 * 或者 + 的后面加上问号,那么,就可以得到上面想要的结果了。

而 U 的作用,则是反转「贪婪模式」,即,默认的情况下使用「非贪婪模式」,反而加了问号的情况却使用「贪婪模式」。

[ 本帖最后由 dz902 于 2007-8-22 19:11 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP