是否可以在textarea中执行一些标记,将其余标记保留为明文?

时间:2011-02-19 05:25:47

标签: php html css

我正在开发一个基于php的Web应用程序,其中有一个文本区域,用户可以在其中键入他/她想要的内容,然后将内容存储在数据库中后显示在另一个页面上。方案是用户可以键入HTML标记。但就功能限制而言,我希望允许用户执行某些标记,例如<a><div>等,使其余标记显示为纯文本。
我之前曾粘贴过这个问题:
Prevent HTML data from being posted into form textboxes
但它只回答了诸如strip_tags()htmlspecialchars()之类的方式,这些方式可以剥离html内容,完全显示剩余的明文,或者将所有内容显示为纯文本,而无需将任何标记添加为异常。请帮忙。欢呼声。

4 个答案:

答案 0 :(得分:1)

您可以查看HTML Purifier。这是专门为此设计的图书馆。

它似乎可以处理任何形式的xss攻击。另请参阅comparison页面。

答案 1 :(得分:0)

正如上一篇文章中所述,strip_tags()就是答案,如果你不费要阅读strip_tags()的手册页,你会发现你可以告诉它允许哪些标签,这正是你想要的

答案 2 :(得分:0)

检查strip_tags {{1}},您会看到接受的第二个(可选)参数是一个允许标记数组。

答案 3 :(得分:0)

编辑:误解了它。没关系D:需要更多的睡眠。看起来你应该运行一个htmlspecialchars并用正则表达式重新转换所需的标签

获取PHP的翻译表并删除你不想要的翻译表,然后调用strtr();

$table = get_html_translation_table(HTML_SPECIALCHARS);
$table['allowed_tag'] = "";
$table['another_allowed_tag'] = "";
strtr($str, $table);

我没有测试过,但应该可以使用。