Php 从字符串中删除无用的段落标记
如果我有一个字符串,比如:Php 从字符串中删除无用的段落标记,php,regex,Php,Regex,如果我有一个字符串,比如: <p> </p> <p></p> <p class="a"><br /></p> <p class="b"> </p> <p>blah blah blah this is some real content</p> <p> </p> <p></
<p> </p>
<p></p>
<p class="a"><br /></p>
<p class="b"> </p>
<p>blah blah blah this is some real content</p>
<p> </p>
<p></p>
<p class="a"><br /></p>
这是一些真实的内容
我怎样才能把它变成:
<p>blah blah blah this is some real content</p>
这是一些真实的内容
正则表达式需要选择s和空格。此正则表达式将与您的示例相反: <p[^>]*>(?:\s+|(?: )+|(?:<br\s*/?>)+)*</p> ]*>(?:\s+|)(?:)+|(?:)+)*$result=preg_replace('#]*>(\s?)*#','$input); 这不会捕获输出中的文字字符,但这种情况非常少见
由于您正在处理HTML,如果这是用户输入,我可能建议使用HTML净化器,它还将处理XSS漏洞。您希望在此处删除空p标记的配置设置是%AutoFormat.RemoveEmpty。正如最初的应答器所述,regex不是这里的最佳解决方案,您需要的是某种html剥离器 此网站上的功能: 应该可以帮助您,您只需要使用一点字符串操作来获得新行,而不是返回到您想要的格式 $result = preg_replace('#<p[^>]*>(\s| ?)*</p>#', '', $input);