首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
PHP
基础编程
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
正则表达式问题???
[已结贴,结贴人:blqq380621262]
加为好友
发送私信
在线聊天
blqq380621262
清泉
等级:
可用分等级:
贫农
总技术分:
15
总技术分排名:
195480
揭贴率:
78.57%
发表于:
2008-08-21 02:38:59
楼主
<?php
preg_match("!(http\:\/\/?)([^\/]+)!i", " <http://www.php.net/index.html>", $matches);
$host = $matches[2];
echo $host;
print_r($matches)
?>
结果:
www.php.net
Array
(
[0] => http://www.php.net
[1] => http://
[2] => www.php.net
)
("!(http\:\/\/?)([^\/]+)!i", 里面的!i分别表示什么???在书上找不到?
([^\/]+)!i 这个表示什么??怎么匹配?? 正则看了很多次还是很模糊,郁闷啊!!
问题点数:
40
回复次数:
9
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sd5816690
神仙?妖怪?谢谢!
等级:
可用分等级:
中农
总技术分:
6593
总技术分排名:
3265
发表于:
2008-08-21 03:04:24
1
楼 得分:
7
没学过PHP,以下解释可能有出入
如果和javascript的一致,i 应该表示忽略大小写,另外 g 表示匹配全部
[^\/] 表示不是 / 的任意字符
+ 表示前面的式子至少出现一次
那个 ! 应该是表示正则表达式结束吧(猜的)
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wildlily980
小李
等级:
可用分等级:
掌柜
总技术分:
4113
总技术分排名:
5074
发表于:
2008-08-21 08:11:11
2
楼 得分:
2
!-----delimitr
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Aylazhang
春暖花开
等级:
可用分等级:
掌柜
总技术分:
5333
总技术分排名:
4078
发表于:
2008-08-21 10:59:24
3
楼 得分:
8
("!(http\:\/\/?)([^\/]+)!i", 里面的!i分别表示什么???在书上找不到?
----- i 表示([i]gnore)忽略大小写 ,即 HTTP:// .. 的也可以匹配
([^\/]+)!i 这个表示什么??怎么匹配?? 正则看了很多次还是很模糊,郁闷啊!!
----- ([^\/]+) 是一部分,而 "!"是正则模式的边界符。
就是红色部分,
!
(http\:\/\/?)([^\/]+)
!
i
但是前后要匹配。这里可以一般用 "/",但是应为目标串里有 http:// 之类的字符,为了避免转义,就用了 !,
当然你还可以用 "%", "|",等,比较灵活。但是前后要匹配。
最后,对url的解析,其实php已经有个很好用的内置函数parse_url() 了,为啥不用它呢:)
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
blqq380621262
清泉
等级:
可用分等级:
贫农
总技术分:
15
总技术分排名:
195480
发表于:
2008-08-21 12:18:27
4
楼 得分:
0
[^\/]这不是表示匹配以/开头的字符传吗?怎么返回给数组的?怎么会得到Array
(
[0] => http://www.php.net
[1] => http://
[2] => www.php.net
)
引用 1 楼 sd5816690 的回复:
没学过PHP,以下解释可能有出入
如果和javascript的一致,i 应该表示忽略大小写,另外 g 表示匹配全部
[^\/] 表示不是 / 的任意字符
+ 表示前面的式子至少出现一次
那个 ! 应该是表示正则表达式结束吧(猜的)
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sd5816690
神仙?妖怪?谢谢!
等级:
可用分等级:
中农
总技术分:
6593
总技术分排名:
3265
发表于:
2008-08-21 13:00:57
5
楼 得分:
11
^ 可以表示字符串开始,也可以表示取反
[^\/] 就是取反
而得到数组,是因为加了括号后分组的原因
第一组:默认为整个表达式
第二:!
(
http\:\/\/?
)
([^\/]+)!i
第三:!(http\:\/\/?)
(
[^\/]+
)
!i
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wangbo_wb
从头再来?
等级:
可用分等级:
富农
总技术分:
3145
总技术分排名:
6654
发表于:
2008-08-21 13:10:34
6
楼 得分:
5
这里的!是正则的边界符,我们一般用/作边界符,i表示不区分大小写
([^\/]+)可以匹配除了/之外的所有字符
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
happy002
狂奔蜗牛
等级:
可用分等级:
中农
总技术分:
2748
总技术分排名:
8434
发表于:
2008-08-21 13:12:08
7
楼 得分:
2
学习~
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
songzairan
冉冉升起
等级:
可用分等级:
长工
总技术分:
333
总技术分排名:
48478
发表于:
2008-08-21 14:32:47
8
楼 得分:
5
!-是开始和结束的分界符,但长用/.../来表示
i-意思是忽略大小写...即不考虑大小写情况!
祝LZ好运!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
blqq380621262
清泉
等级:
可用分等级:
贫农
总技术分:
15
总技术分排名:
195480
发表于:
2008-08-21 16:38:39
9
楼 得分:
0
[size=24px] 辛苦大家了 给你们加分去~~~~~~~~~~~~···[/size]
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友