求一段正则表达式!

den1986 2013-10-31 02:54:28
<ul id="a">
<li style="display:none">xxx</li>
<li style="display:block">xxx</li>
<li>xxx</li>
</ul>
<ul id="b">
<li style="display:none">xxx</li>
<li style="display:block">xxx</li>
<li>xxx</li>
</ul>

我想正则取得ID为b的UL里的每一个li里的内容,正则应该怎么写?

/<ul id="b">.*?<li.*?>(.*?)<\/li>.*?<\/ul>/is 只能匹配到第一个li里的内容
...全文
191 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuan19900 2013-11-10
  • 打赏
  • 举报
回复
(?<=<ul id="b">(?:\s*<li.*?>.*?<\/li>\s*)*)\s*<li.*?>(.*?)<\/li>\s* 给你个参考,你自己根据需求再修改下
qizhiping 2013-11-06
  • 打赏
  • 举报
回复
不能用jquery吗? $('#b')->find('ul')->find('li')就是你想要的内容了。
一起混吧 2013-10-31
  • 打赏
  • 举报
回复
能力有限,看其他高手有妙招不。
den1986 2013-10-31
  • 打赏
  • 举报
回复
不分两次行么?
一起混吧 2013-10-31
  • 打赏
  • 举报
回复
$s=<<<html
<ul id="a">
<li style="display:none">xxx</li>
<li style="display:block">xxx</li>
<li>xxx</li>
</ul>
<ul id="b">
<li style="display:none">xxx</li>
<li style="display:block">xxx</li>
<li>xxx</li>
</ul>
html;

preg_match('#<ul id="b">(.+)</ul>#is',$s,$m);
preg_match_all('#<li[^>]*>(.+)</li>#isU',$m[1],$arr);
print_r($arr[1]);

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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