从文本中删除标签?

时间:2011-08-06 17:59:41

标签: php mysql insert strip-tags

我有一张表格。当用户提交数据时,我的脚本会使用

检查php / html的文本
$text1 = strip_tags($text);

然后将数据插入数据库。 但是当用户提交类似这样的内容时:“我完全< 3这个网站”,它只插入:“我完全”。我该如何解决这个问题?

(我需要删除标签)

5 个答案:

答案 0 :(得分:3)

你需要逃避这些角色而不是剥离它们。您可以使用htmlspecialchars功能来实现它。例如:

$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;

它将特殊字符作为HTML实体转义,以便正确显示它们。

答案 1 :(得分:0)

你可以用他们的eqiualents替换标签,不要删除它。 使用

htmlspecialchars()

答案 2 :(得分:0)

我不确定为什么你想要这样做,但你可以通过

删除<>
$stripped = str_replace(array('<', '>'), '', $text);

但我会建议转义字符串,而不是像这样

$escaped = htmlspecialchars($text);
// or
$escaped = htmlentities($text);

答案 3 :(得分:0)

虽然正确答案是使用其他答案中提到的htmlentities,但在剥离代码之前,您始终可以使用数组预处理$text

$search = array('<3', ':<');
$replace = array('&lt;3', ':&lt;');

echo strip_tags(str_replace($search, $replace, $text));

显然,每次获得这些特殊情况的新实例时,您都必须更新数组 - 因此,可能需要考虑正确的结果。

答案 4 :(得分:0)

如果您想将其放入数据库,请不要使用strip_tags,而应使用相应的mysqli_real_escape_string函数或prepared statements。之后,在html页面上输出内容时,请使用htmlspecialchars