如何从输出中删除 html 标签但保持格式

Posted

技术标签:

【中文标题】如何从输出中删除 html 标签但保持格式【英文标题】:How to remove html tags from output but keeping the format 【发布时间】:2015-12-07 01:52:33 【问题描述】:

我正在使用 mysql 数据库并防止我使用的 SQL 注入:

$entities_correction = htmlspecialchars($Query, ENT_COMPAT, 'UTF-8');

但是,当我尝试向用户显示信息时,我得到了这个:

<p><strong>asdasdasdasdasd</strong></p><p><em>asdasdasdasd</em></p><ol><li><em>1</em></li><li><strong>2</strong><ol><li><strong>​asdasdasd</strong></li></ol></li></ol><p><strong>​​adasbui</strong></p>

带有标签和所有这些东西。如何删除这些标签并在向用户显示时使其看起来像这样?

预期输出:

asdasdasdasdasd

asdasdasdasd

    1 2
      ​asdasdasd

​​adasbui

【问题讨论】:

你如何向用户展示信息? 我正在使用这个: 打印$AsignacionTareas["TareaDescripcion"] 不带htmlspecialchars_decode 并向我们展示你得到了什么。复制源视图的结果,而不是网页plz。 看看这个线程 How can I prevent SQL-injection in php? 了解你应该如何防止 SQL 注入,htmlspecialchars 是不可以的,尤其是只有 ENT_COMPAT,.. htmlspecialchars 不会阻止 SQL 注入,因为它也不打算这样做。 【参考方案1】:

您可以简单地使用html_entity_decode

html_entity_decode() 函数将 HTML 实体转换为字符。

请参考以下链接: http://www.w3schools.com/php/func_string_html_entity_decode.asp http://php.net/manual/en/function.html-entity-decode.php

【讨论】:

对不起,我没有提到...我已经在使用 htmlspecialchars_decode 但仍然无法使用【参考方案2】:

出于这个原因,您必须使用htmlspecialchars_decode()。只需将数据传递给它。

更多信息:http://php.net/manual/en/function.htmlspecialchars-decode.php

【讨论】:

以上是关于如何从输出中删除 html 标签但保持格式的主要内容,如果未能解决你的问题,请参考以下文章

使用php删除内联样式[重复]

如何从innerHTML输出中删除引号

有没有办法从 JavaScript 中的字符串中删除 html 标签? [复制]

如何从 cmsfn.link 的输出中删除 .html 扩展名?

从使用 XSL 生成的 HTML 中删除空格

如何在UITableViewCell - Swift 3中删除标签后仍然保持约束