我目前有以下内容:
<section>
<hgroup>
<h1 style="text-align: center;">Koptitel 1</h1>
<h2 style="text-align: center;">Subtitel</h2>
</hgroup>
<ul class="sample1">
<li class="sample2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat, urna eget ultricies egestas, lectus mi tincidunt nulla, ut molestie odio lectus ut arcu.</li>
<li class="sample2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat, urna eget ultricies egestas, lectus mi tincidunt nulla, ut molestie odio lectus ut arcu."</li>
</ul>
</section>
沙盒网址:http://regex101.com/r/zQ0lN5
我在PHP中有以下代码:
$new_content = preg_replace('/(?<=<ul class="sample1">|<\/li>)\s*?(?=<\/ul>|<li.*?>)/is', '', $content);
这样做,ul和li之间以及li项之间的空格被删除,因此预期输出为。
<section>
<hgroup>
<h1 style="text-align: center;">Koptitel 1</h1>
<h2 style="text-align: center;">Subtitel</h2>
</hgroup>
<!-- SEE BELOW NO WHITE SPACES -->
<ul class="sample1"><li class="sample2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat, urna eget ultricies egestas, lectus mi tincidunt nulla, ut molestie odio lectus ut arcu.</li><li class="sample2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat, urna eget ultricies egestas, lectus mi tincidunt nulla, ut molestie odio lectus ut arcu."</li></ul>
</section>
我更愿意做以下事情:
//Ignore what's between < and > : <ul.*?>
$new_content = preg_replace('/(?<=<ul.*?>|<\/li>)\s*?(?=<\/ul>|<li.*?>)/is', '', $content);
因此编码器甚至可以在ul标签中添加样式或其他内容,代码仍然不会中断。然而,lookbehinds需要为零宽度,因此不允许使用量词。那么我该如何解决这个问题?
答案 0 :(得分:2)
也许这可以解决问题?你不需要 lookbehinds。
echo preg_replace("/[\s\n]*?(\<(\/ul>|li[\s>]))/i", "$1", $your_document);
$your_document
是您要处理的HTML代码。
所以,如果这是你的HTML:
<section>
<hgroup>
<h1 style="text-align: center;">Koptitel 1</h1>
<h2 style="text-align: center;">Subtitel</h2>
</hgroup>
<ul class="sample1">
<li class="sample2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat, urna eget ultricies egestas, lectus mi tincidunt nulla, ut molestie odio lectus ut arcu.</li>
<li class="sample2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat, urna eget ultricies egestas, lectus mi tincidunt nulla, ut molestie odio lectus ut arcu.</li>
</ul>
</section>
输出如下:
<section>
<hgroup>
<h1 style="text-align: center;">Koptitel 1</h1>
<h2 style="text-align: center;">Subtitel</h2>
</hgroup>
<ul class="sample1"><li class="sample2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat, urna eget ultricies egestas, lectus mi tincidunt nulla, ut molestie odio lectus ut arcu.</li><li class="sample2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat, urna eget ultricies egestas, lectus mi tincidunt nulla, ut molestie odio lectus ut arcu.</li></ul>
</section>
这将删除\n
之间,<ul> and <li>
之间以及</li> and <li>
个标记之间的所有空格和换行符(</li> and </ul>
),从而使整个<ul>
元素被写入在一行中,>
和<
之间没有空格。此正则表达式不区分大小写,因此它还会查找<LI>
以及<li>
。