当前位置: 代码迷 >> PHP >> 求一段正则表达式!解决方法
  详细解决方案

求一段正则表达式!解决方法

热度:6   发布时间:2016-04-28 19:49:50.0
求一段正则表达式!
<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里的内容
------解决方案--------------------
$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]);

------解决方案--------------------
(?<=<ul id="b">(?:\s*<li.*?>.*?<\/li>\s*)*)\s*<li.*?>(.*?)<\/li>\s*  给你个参考,你自己根据需求再修改下
  相关解决方案