所以我不知道我是在Google或Stackoverflow上寻找错误的东西,但我想实现这个目标 -
表单中有一个文本区域,我希望用户能够输入HTML标记。
因此用户可以将其输入文本区域:
<html>
<p>Hello World</p>
</html>
然后由AJAX和JavaScript将其提交到数据库,但似乎摆脱了标签。
我想要的是在返回数据时保留标签,但实际上不会影响文本区域中的其他数据。例如,如果我要回显文本区域的内容,它会回应:
<html>
<p>Hello World</p>
</html>
作为纯文本。
好的,我已经找到了使用htmlspecialchars的根本,它可以实现我想要的功能,因为它将标签显示为纯文本。但是我想要一些标签来执行,例如粗体标签。我如何组合htmlspecialchars和striptags以允许标记显示为纯文本,但也允许执行条带标记中指定的标记。
答案 0 :(得分:3)
您无需(或可以)做任何事情来允许用户输入HTML标记。原因是无论如何输入都是纯文本,因此任何<
字符都是按原样获取的。因此,如果用户键入<a>
,则会将这三个字符插入到表单数据中。
您对数据执行的操作(服务器端或其他方式)可能会也可能不会处理HTML标记。这完全取决于你的代码。如果您只是在生成的HTML页面上回显所有内容,那么HTML标记将具有通常的效果。如果您希望将其作为文本呈现为可见标记,则只需将&
编辑为&
,将任何<
编码为<
。
答案 1 :(得分:2)
您不需要做任何事情,只要您不过滤用户提交的文字,它就会自动执行。
答案 2 :(得分:1)
N.B。如果要将输入的HTML回显给用户,请非常了解输入的HTML中的潜在恶意代码。此安全问题称为跨站点脚本(或XSS)。
换句话说:永远不要相信输入的代码