如何在ul元素中包装li元素块

时间:2011-02-10 14:17:38

标签: php regex dom string html-parsing

好的,考虑使用以下示例字符串。

Duis posuere suscipit lacus quis lacinia. In molestie lectus sed.
<li>test line here</li>
<li>Second test</li>
<li>Third test</li>
<li>Another test</li>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis posuere suscipit lacus quis lacinia. In molestie lectus sed.
\* Aliquam posuere sapien id elit sodales at vestibulum lacus porttitor. 
*hej
A * hejdu
<li>hejsan</li>
<li>Another item</li>
Lorem ipsum dolor sit amet, consectetur adipidsa
<li>Lonely list item</li>

所以我想说我要在ul元素中包含三个 li blocks ,这样我就会将四个第一个li元素包装在一个ul中,第二个块中的两个元素包含在一个ul中最后一个包裹在一个ul。我正在考虑正则表达式,但我不知道我是如何建立这样的正则表达式。也许还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

如果这是源转换,那么正则表达式可能是一个选项它取决于格式是否一致。但是你可以使用类似的东西:

= preg_replace("#(^<li>.*?</li>\s*)+#m", "<ul>$0</ul>", $content);

诀窍是寻找可以使用(...)+多次出现的内容,而内部部分仅限于完全匹配<li>..</li>,甚至需要位于行的^开头

可能还有其他选择。但我无法想象如何用DOM方法包装li-groups,因为你从一个文本文档开始。