正则表达式问题

-神仙- 2005-07-21 11:25:58
<t>aaa<t>bbb</t>dddd</t>
<t>ccc</t>yyy<t>ooo</t>ddd

怎样才能正确匹配嵌套呢
依次匹配
aaa<t>bbb</t>dddd
bbb
ccc
ooo
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
-神仙- 2005-07-22
  • 打赏
  • 举报
回复
老大就是强~~~
xuzuning 2005-07-22
  • 打赏
  • 举报
回复
因为你没有实际的去测试一下
取得一对标签里的内容可写作
<t>.*?</t>

当使用preg_match和preg_match_all时:
对于嵌套的 <t>aaa<t>bbb</t>dddd</t>
<t>.*?</t>
匹配到的是 <t>aaa<t>bbb</t>
<t>.*</t>
匹配到的是 <t>aaa<t>bbb</t>dddd</t>

对于并列的 <t>ccc</t>yyy<t>ooo</t>
<t>.*?</t>
匹配到的是 <t>ccc</t> 和 <t>ccc</t> <t>ooo</t>
<t>.*</t>
匹配到的是 <t>ccc</t>yyy<t>ooo</t>


$ar = preg_split("#<(/?t)>#",$str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
对于嵌套的 <t>aaa<t>bbb</t>dddd</t>
得到
Array
(
[0] => t
[1] => aaa
[2] => t
[3] => bbb
[4] => /t
[5] => dddd
[6] => /t
)

对于并列的 <t>ccc</t>yyy<t>ooo</t>
得到
Array
(
[0] => t
[1] => ccc
[2] => /t
[3] => yyy
[4] => t
[5] => ooo
[6] => /t
)

接下来该怎样做,我想不用说了吧?
-神仙- 2005-07-22
  • 打赏
  • 举报
回复
也就是取得一对标签里的内容
<t>aaa<t>bbb</t>dddd</t>
取得的因该是aaa<t>bbb</t>dddd
<t>ccc</t>yyy<t>ooo</t>
取得的因该是
ccc, ooo
gu1dai 2005-07-22
  • 打赏
  • 举报
回复
我想大概不只我一格人不明白你的意思
xuzuning 2005-07-22
  • 打赏
  • 举报
回复
正则表达式要与相关工具结合才能发挥作用!

preg_match和preg_match_all是不可能做到的
用preg_split就能较好的解决

21,887

社区成员

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

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