是否可以使HTML Purifier用<p>替换双重,同时不删除单个?</p>

时间:2014-10-07 09:47:28

标签: php html htmlpurifier

是否可以使HTML Purifier用<br>替换双<p>,同时不删除单个?制作起来有多容易?

我们正尝试在用户生成的内容中将<br>更改为<p>,我们会将HTML Purifier用于此目的。但似乎这个库同时削减了所有单<br>

P.S。我不是程序员,我是产品经理。我要求在我们的服务上配置文本解析器(我们使用HTML Purifier),让它在用户生成的文本中使用<p>的{​​{1}}标记。程序员已经完成了这个,但是出现了下一个问题:解析器开始切断单行中断<br><br>。我被告知要修复它是不可能的或非常困难的。我很困惑,之前我使用正则表达式,这根本不是问题。

1 个答案:

答案 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>";
}

在此处找到信息:php: replacing double <br /> with </p><p>