PHP:<ul>列表的正则表达式</ul>

时间:2012-07-06 09:28:38

标签: php regex

我需要一个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)

2 个答案:

答案 0 :(得分:3)

不要使用正则表达式来解析HTML,这是一个坏主意,因为HTML不是常规语言...您可以使用其他方法(如tidythe built in DOMDocument)轻松解析它正则表达式

如果你坚持,你所寻找的是不情愿的匹配(而不是贪婪)

*更改为*?

请参阅this post有关差异和this one为什么尝试使用正则表达式解析html是个坏主意

答案 1 :(得分:0)

使用它:

<ul>(?<ulContent>.*?)</ul>

并获取名为 ulContent

的组