是否有反正使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