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

shadowstar 2009-08-15 06:22:24
[game任意字符]要取得中间这个字符串[/game]
...全文
485 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

21,886

社区成员

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

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