0

我有一个以无序列表开头的内容字符串我想在我的主页上对此内容进行摘要,我需要匹配第一个无序列表并且在预览中只显示 5 个列表项,所以我说匹配整个 ul使用此正则表达式标记:

/<\s*ul[^>]*>(.*?)<\s*/\s*ul>/s

它在在线正则表达式测试器中运行良好,但我得到未知修饰符'\',我不知道是哪一个?同样在获得整个无序列表之后,我如何只选择前 5 个列表项,例如:

<ul class="mylist">
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
    <li>Lorem Ipsum Dolor Sit Amet</li>
</ul>

我想只用前 5 个标签创建同一个<li>标签,所以我应该在 php 中使用正则表达式还是其他一些方法?

并提前感谢。

4

1 回答 1

2
/<\s*ul[^>]*>(.*?)<\s*/\s*ul>/s

/如果将其用作分隔符,则需要转义。

/<\s*ul[^>]*>(.*?)<\s*\/\s*ul>/s

但是,在 PHP 中,您可以使用任何字符作为分隔符:

#<\s*ul[^>]*>(.*?)<\s*/\s*ul>#s

您可以重复一个模式:

#<\s*ul[^>]*>(\s*<li>.+?</li>){5}#sm

将匹配 5<li>秒。但是,您将无法单独访问它们。您可以展开该重复组,也可以运行第二个表达式来提取<li>s。

于 2012-06-21T16:10:27.277 回答