使用PHP清理HTML以创建干净的字符串
我有一堆HTML数据,我正在使用PHP将它们写入PDF文件。在PDF中,我希望所有的HTML都被剥离和清理。例如:使用PHP清理HTML以创建干净的字符串,php,html,strip-tags,Php,Html,Strip Tags,我有一堆HTML数据,我正在使用PHP将它们写入PDF文件。在PDF中,我希望所有的HTML都被剥离和清理。例如: <ul> <li>First list item</li> <li>Second list item which is quite a bit longer</li> <li>List item with apostrophe 's 's</li> </ul>
<ul>
<li>First list item</li>
<li>Second list item which is quite a bit longer</li>
<li>List item with apostrophe 's 's</li>
</ul>
但是,如果我简单地使用strip\u tags()
,我会得到如下结果:
First list item

Second list item which is quite a bit
longer

List item with apostrophe ’s ’s
还要注意输出的缩进
关于如何正确地将HTML清理成漂亮、干净的字符串,而不使用混乱的空格和奇数字符,有什么提示吗
谢谢:)使用库清理html。但在您的例子中,我会使用类从html获取数据。字符似乎是html实体。尝试:
html_entity_decode( strip_tags( $my_html_code ) );
您可以使用preg_replace对strip_标记的结果进行解码或删除它们:
$text = strip_tags($html_text);
$content = preg_replace("/&#?[a-z0-9]{2,8};/i","",$text );
要删除行开头的空白,请使用:
要保留撇号,请改为使用此选项:
$text = strip_tags($html_text);
$text = str_replace("’","'", $text);
$content = preg_replace("/&#?[a-z0-9]{2,8};/i","",$text );
我怀疑单凭
strip\u tags()
就能对你的实体进行编码。你确定你没有在某个地方错过对htmlentities
的调用吗?缩进正是我所期望的,PHP正在剥离标记,但不是它们周围的额外文本。你的意思是我应该或不应该在某个地方使用htmlentities()?现在我不是。HTML数据直接来自数据库。htmlentities
负责这些事情
代码>(例如),所以如果你不想要它们,就不应该使用它。那太好了!差不多了。唯一的问题是撇号现在已经完全消失了。这可以通过一个小的调整来解决吗?我在你的回答中使用了preg_replace。很好,这对我遇到的问题起到了治疗作用。
$content = join("\n", array_map("ltrim", explode("\n", $content )));
$text = strip_tags($html_text);
$text = str_replace("’","'", $text);
$content = preg_replace("/&#?[a-z0-9]{2,8};/i","",$text );