我目前有以下内容:
<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 标记中添加样式或其他内容,并且代码仍然不会中断。然而,lookbehind 必须是零宽度,因此不允许使用量词。那么我该如何解决这个问题呢?
最佳答案
也许这可以解决问题?您不需要回顾。
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>
.
关于php - 如何删除 <ul> 元素内标记对之间的所有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23343824/