我需要一个PHP正则表达式模式来从字符串中单独选择所有列表<ul></ul>
。
字符串就像:
Lorem ipsum dolor sit amet,...
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
Lorem ipsum dolor sit amet,...
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
....
我需要提取两个列表并将它们保存在数组中,因此结果如下:
$listsarray[0] = first list code from <ul> to </ul>.
$listsarray[1] = second list code, etc..
我尝试了什么,但这不能按预期工作。如果有两个以上的列表,它会选择前两个列表(我不知道为什么,我是正则表达式的新手):
$content = 'the content like above...';
$pattern = '/<ul[^.]*<\/ul>/';
preg_match_all($pattern, $content, $listsarray)
答案 0 :(得分:3)
不要使用正则表达式来解析HTML,这是一个坏主意,因为HTML不是常规语言...您可以使用其他方法(如tidy或the built in DOMDocument)轻松解析它正则表达式
如果你坚持,你所寻找的是不情愿的匹配(而不是贪婪)
将*
更改为*?
答案 1 :(得分:0)
使用它:
<ul>(?<ulContent>.*?)</ul>
并获取名为 ulContent
的组