【发布时间】:2017-06-23 16:53:15
【问题描述】:
我正在尝试提取下面 <li> </li> 标记中的单词。我的正则表达式运行良好,但只给了我第一个 <li>、Lorem ipsum...
我对正则表达式相当陌生,我知道通过遍历 DOM 可能更可靠,但在这种情况下,更喜欢正则表达式。有什么想法我需要改变才能获得所有结果,而不仅仅是一个?
/<div class="foo-bar">[\s\S]+<ul>[\s\S]*?(<li>([\s\S]*?)<\/li>)+[\s\S]*?<\/ul>/
<div class="foo-bar">
<!-- Other junk -->
<ul>
<li>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</li>
<li>
Vestibulum iaculis nibh ac orci imperdiet ultrices.
</li>
<li>
Fusce neque lacus, feugiat eget sapien eget, ullamcorper rutrum mauris.
</li>
<li>
Maecenas in ipsum consectetur, finibus ex et, condimentum turpis.
</li>
</ul>
<!-- Other junk -->
</div>
【问题讨论】:
-
你的 PHP 代码是什么样的?
-
不要使用正则表达式。使用解析器。 php.net/manual/en/domdocument.getelementsbytagname.php 要使用正则表达式,您需要提取完整的
ul,然后解析出每个li。 -
还不存在,只是对正则表达式进行原型设计。只需要像上面那样摆弄一个 sn-p。
-
我也读过。 :) 我仍然认为它适合您的问题,因为您可能要求单个正则表达式做太多事情。