使用html字符串在我的localhost上使用HTMLPurifier。
这是我的代码:
require_once '/htmlpurifier-4.9.2/library/HTMLPurifier.auto.php';
$html = '<table class="product-description-table">
<tbody>
<tr>
<td class="item" colspan="3">Test Title</td>
</tr>
<p class="MsoNormal c2"><strong>Test Paragraph 3</strong></p>
<p class="MsoNormal c2"><strong>Test Paragraph 2</strong></p>
<p class="MsoNormal c2"><strong>Test Paragraph 3</strong></p>
<p class="c5"></p>
<p class="MsoNormal c2"><strong> </strong></p>
<strong class="c6"><strong><em><br></em></strong></strong>
<p class="c2"></p>
<p class="c4"></p>
</td>
<td class="product-content-border"></td>
</tr>
<tr>
<td class="gallery" colspan="3">
<table>
<tbody>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>';
$config = HTMLPurifier_Config::createDefault();
$config->set('AutoFormat.RemoveEmpty', true);
$config->set('AutoFormat.RemoveSpansWithoutAttributes', true);
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($html);
echo $clean_html;
现在,使用完全相同的字符串,并且(假设)完全相同的过滤器AutoFormat.RemoveEmpty
和AutoFormat.RemoveSpansWithoutAttributes
在Live Demo上正常工作
输出:
<table class="product-description-table"><tbody><tr><td class="item" colspan="3">Test Title</td>
</tr></tbody></table><p class="MsoNormal c2"><strong>Test Paragraph 3</strong></p>
<p class="MsoNormal c2"><strong>Test Paragraph 2</strong></p>
<p class="MsoNormal c2"><strong>Test Paragraph 3</strong></p>
<p class="MsoNormal c2"><strong> </strong></p>
<strong class="c6"><strong><em><br /></em></strong></strong>
但是使用我的PHP代码,当我查看源代码时,它会保留空表。
输出:
<table class="product-description-table"><tbody><tr><td class="item" colspan="3">Test Title</td>
</tr></tbody></table><p class="MsoNormal c2"><strong>Test Paragraph 3</strong></p>
<p class="MsoNormal c2"><strong>Test Paragraph 2</strong></p>
<p class="MsoNormal c2"><strong>Test Paragraph 3</strong></p>
<p class="MsoNormal c2"><strong> </strong></p>
<strong class="c6"><strong><em><br /></em></strong></strong>
<table><tbody><tr><td></td>
<td></td>
</tr><tr><td></td>
<td></td>
</tr><tr><td></td>
<td></td>
</tr><tr><td></td>
<td></td>
</tr><tr><td></td>
<td></td>
</tr><tr><td></td>
<td></td>
</tr><tr><td></td>
<td></td>
</tr><tr><td></td>
<td></td>
</tr></tbody></table>
为什么这不起作用?我的PHP脚本如何获得与Live Demo不同的输出?
答案 0 :(得分:1)
通过HTML Purifier支持解决了..我所要做的就是将其添加到我的$config
$config->set('AutoFormat.RemoveEmpty.Predicate', [
'table' =>
[]
]);
它正在使用版本4.9.2
。讨厌的桌子不见了。