我有一个表格。当用户提交数据时,我的脚本会检查 php/html 的文本
$text1 = strip_tags($text);
然后它将数据插入数据库。但是当用户提交这样的内容时:“我完全 <3 这个网站”,它只插入:“我完全”。我怎样才能解决这个问题?
(我需要删除标签)
我有一个表格。当用户提交数据时,我的脚本会检查 php/html 的文本
$text1 = strip_tags($text);
然后它将数据插入数据库。但是当用户提交这样的内容时:“我完全 <3 这个网站”,它只插入:“我完全”。我怎样才能解决这个问题?
(我需要删除标签)
您需要转义这些字符,而不是将它们剥离。您可以使用htmlspecialchars函数来实现它。例如:
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
它将特殊字符转义为 HTML 实体,以便正确显示它们。
我不确定你为什么要这样做,但你可以去掉<
并>
通过做
$stripped = str_replace(array('<', '>'), '', $text);
但我建议像这样转义字符串
$escaped = htmlspecialchars($text);
// or
$escaped = htmlentities($text);
您可以用它们的等价物替换标签,不要删除它。利用
htmlspecialchars()
虽然正确的答案是使用其他答案中提到的htmlentities$text
,但您始终可以有一个数组来在剥离标签之前对其进行预处理。
$search = array('<3', ':<');
$replace = array('<3', ':<');
echo strip_tags(str_replace($search, $replace, $text));
显然,每次获得这些特殊情况的新实例时,您都必须更新您的数组——因此,可能需要考虑一个适当的结果。
如果你想把它放到你的数据库中,不要使用strip_tags
适当的mysqli_real_escape_string
函数或准备好的语句。稍后,在 html 页面上输出内容时,使用htmlspecialchars