是否有反正使HTML净化器保留通常会在呈现的HTML中看到的隐含空间?HTML净化器保留空间
例如,你通常会期望在以下这些情况下Foo
和Bar
之间的空间:
Foo<br/>Bar
<div>Foo</div><div>Bar</div>
是否有反正使HTML净化器保留通常会在呈现的HTML中看到的隐含空间?HTML净化器保留空间
例如,你通常会期望在以下这些情况下Foo
和Bar
之间的空间:
Foo<br/>Bar
<div>Foo</div><div>Bar</div>
我有一个残酷的计划 - 更换任何标签关闭“>”空格并删除双空格
<?php
$text = '<div>test</div><div>me</div>';
$text = preg_replace('/(<\/[a-z]+>)/', '$1 ', $text);
$text = trim(preg_replace('/\s+/', ' ', strip_tags($text)));
var_dump($text);
返回
string(7) "test me"
貌似HTMLPurifier不删除空白,它的删除标记都在一起,因为它不承认他们(这是奇怪)。
在问候Foo<br/>Bar
Error Line 1, Column 3: Unrecognized <br /> tag removed
在问候<div>Foo</div><div>Bar</div>
Error Line 1, Column 0: Unrecognized <div> tag removed
Error Line 1, Column 8: Unrecognized </div> tag removed
Error Line 1, Column 14: Unrecognized <div> tag removed
Error Line 1, Column 22: Unrecognized </div> tag removed
您可以通过在现场演示使CollectErrors看到这一点。
也许尝试允许div
,并且br
:http://htmlpurifier.org/live/configdoc/plain.html#HTML.AllowedElements
下面是从Live Demo结果:
我在谈论隐式空白,即从渲染的HTML输出中会有一个新行。我故意不允许这些标签。 – Petah 2014-11-10 03:00:44
是的,基本上我所允许的是'strong,em,strike,b,i'等 – Petah 2014-11-10 03:32:55
我明白了,所以你只允许造型HTML。如果有一个HTML标签,并且它被剥离,则没有隐含的空白或新行开头。在通过HTML Purifier发送它们之前,您需要用它们替换它们。 – EternalHour 2014-11-10 03:44:04