1

我有一个表格。当用户提交数据时,我的脚本会检查 php/html 的文本

$text1 = strip_tags($text);

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

(我需要删除标签)

4

5 回答 5

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 实体,以便正确显示它们。

于 2011-08-06T18:02:51.437 回答
0

我不确定你为什么要这样做,但你可以去掉<>通过做

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

但我建议像这样转义字符串

$escaped = htmlspecialchars($text);
// or
$escaped = htmlentities($text);
于 2011-08-06T18:12:56.850 回答
0

您可以用它们的等价物替换标签,不要删除它。利用

htmlspecialchars()

于 2011-08-06T18:03:23.270 回答
0

虽然正确的答案是使用其他答案中提到的htmlentities$text ,但您始终可以有一个数组来在剥离标签之前对其进行预处理。

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

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

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

于 2011-08-06T18:18:02.643 回答
0

如果你想把它放到你的数据库中,不要使用strip_tags适当的mysqli_real_escape_string函数或准备好的语句。稍后,在 html 页面上输出内容时,使用htmlspecialchars

于 2011-08-06T18:57:45.603 回答