是否可以使HTML Purifier用<br>
替换双<p>
,同时不删除单个?制作起来有多容易?
我们正尝试在用户生成的内容中将<br>
更改为<p>
,我们会将HTML Purifier用于此目的。但似乎这个库同时削减了所有单<br>
。
P.S。我不是程序员,我是产品经理。我要求在我们的服务上配置文本解析器(我们使用HTML Purifier),让它在用户生成的文本中使用<p>
的{{1}}标记。程序员已经完成了这个,但是出现了下一个问题:解析器开始切断单行中断<br><br>
。我被告知要修复它是不可能的或非常困难的。我很困惑,之前我使用正则表达式,这根本不是问题。
答案 0 :(得分:-2)
它可以很容易地完成。第一个(也是最简单的方法)就是用<br><br>
替换</p><p>
并将整个内容包装在<p></p>
标记中。
$string = str_replace( '<br><br>', '</p><p>', $string );
$string = str_replace( '<br /><br />', '</p><p>', $string );
$string = str_replace( '<br><br />', '</p><p>', $string );
$string = str_replace( '<br /><br>', '</p><p>', $string );
echo "<p>$string</p>";
但更清洁的解决方案就是这样。使用正则表达式识别标签,然后进行替换。它搜索<br>,<br >,<br />, etc.
然后进行替换。像这样:
function replace_br($data) {
$data = preg_replace('#(?:<br\s*/?>\s*?){2,}#', '</p><p>', $data);
return "<p>$data</p>";
}