求一个正则表达式,得到两个标签之间的字符串

shadowstar 2009-08-15 06:22:24
[game任意字符]要取得中间这个字符串[/game]
...全文
346 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadowstar 2009-08-19
感谢几位,先留着有空再学。
回复
conqweal 2009-08-17
<?php

$str="<a>xxx </a> <a>yyy </a> <a>zzz </a> ";
preg_match_all("/<a>.*?<\/a>/i",$str,$str2);
print_r($str2);

?>
回复
aimie 2009-08-15
[Quote=引用 3 楼 shadowstar 的回复:]
.+?
.*?

有什么区别?

如果不要换行怎么表示?
[/Quote]
点号表示任意字符(除换行符),加号表示至少有一个,星号表示任意多个,问号表示一个或者零个。
如果个数的后面还有个问号,表示非贪婪搜索(从左边开始处理字符串),没有则是贪婪搜索(从右边开始处理字符串)。上面那两个是非贪婪。
一般用非贪婪的情况比较多,关于贪婪与非贪婪,自己用下面一段来做个实验就明白了。
<a>xxx</a><a>yyy</a><a>zzz</a>
以a标记为查找字符串。
<a>.*</a> 贪婪
<a>.*?</a> 非贪婪
回复
hzbigdog 2009-08-15
不要换行什么意思?
/\[game[^\]]+?\](.*)\[\/game\]/i
回复
hzbigdog 2009-08-15
.+? = .*
回复
shadowstar 2009-08-15
.+?
.*?

有什么区别?

如果不要换行怎么表示?
回复
梦宇飞 2009-08-15
if( preg_match("/\[game(.+?)\](.+?)\[\/game\]/is","[game任意字符]要取得中间这个字符串[/game]",$conn)){
echo $conn[2];//2代表第二个括号
}
回复
duxins 2009-08-15
/\[game(.*?)](.*?)\[\/game]/i
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告