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

PHP:PHP的正则表达式<;ul>;列表,php,regex,Php,Regex,我需要一个PHP正则表达式模式从字符串中分别选择所有列表。 字符串类似于: 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&

我需要一个PHP正则表达式模式从字符串中分别选择所有列表。 字符串类似于:

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>
....
Lorem ipsum door sit amet,。。。
  • 项目1
  • 项目2
  • 项目3
我爱你,我爱你,。。。
  • 项目1
  • 项目2
  • 项目3
....
我需要提取两个列表并将它们保存在数组中,因此结果如下所示:

$listsarray[0] = first list code from <ul> to </ul>.
$listsarray[1] = second list code, etc..
$listsarray[0]=从
      的第一个列表代码。 $listsarray[1]=第二个列表代码等。。
我已经试过了,但没有达到预期效果。如果有两个以上的列表,它会选择前两个作为一个(我不知道为什么,我是正则表达式的新手):

$content='像上面这样的内容…';

$pattern='/不要使用正则表达式来解析HTML,这是个坏主意,因为HTML不是一种正则语言。。。您可以使用其他方法(如或)来轻松地解析它,而无需使用正则表达式

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

*
更改为
*?


了解差异以及为什么尝试用正则表达式解析html是个坏主意不要用正则表达式解析html,这是个坏主意,因为html不是一种正则语言。。。您可以使用其他方法(如或)来轻松地解析它,而无需使用正则表达式

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

*
更改为
*?

请了解其中的区别以及尝试使用正则表达式解析html的错误原因使用以下方法:

<ul>(?<ulContent>.*?)</ul>
    (?*?)
并获取名为ulContent的组使用以下命令:

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

获取名为ulContent的组

不要用regexp解析HTML不要用regexp解析HTML解析HTML更好的解决方案是整洁的。它甚至可以解析破损的HTML,让您可以操纵树结构,并可以输出完全有效的(X)HTML。好主意,我将编辑答案,以包含常规HTML的更好替代方案expressions@BenjaminGruenbaum非常感谢你*?解决了我所有的问题。@BenjaminGruenbaum您好,我想您是对的,用正则表达式解析HTML是个坏主意,有些东西没有按预期工作,所以我想问:您能举一些例子说明如何使用Tidy或DOMDocument执行相同(类似)任务吗,我没有这些方面的经验,也无法在网上找到一些脚本示例。您能帮忙吗?如果您查看php.net上的文档,那里有很多关于USAGE的示例。解析HTML的更好解决方案是整洁的。它甚至可以解析破损的HTML,让您可以操纵树结构,并可以输出完全有效的(X)HTML。好主意,我将编辑答案,以包含常规HTML的更好替代方案expressions@BenjaminGruenbaum非常感谢你*?解决了我所有的问题。@BenjaminGruenbaum您好,我想您是对的,用正则表达式解析HTML是个坏主意,有些东西没有按预期工作,所以我想问:您能举一些例子说明如何使用Tidy或DOMDocument执行相同(类似)任务吗,我没有这些方面的经验,也无法在网上找到一些脚本示例。你能帮忙吗?如果你查看php.net上的文档,那里有很多关于用法的例子