删除特殊字符

时间:2015-08-06 10:07:25

标签: php mysql

我正在尝试从字符串中删除特殊字符。

用户在WYSWIG编辑器中输入文本并单击“保存”,然后将数据保存在数据库中。

但是输入了'(例如,在单词don't中,脚本失败。

我已经尝试了以下但是它没有用,有人可以建议吗?

$content=$_POST[content];

 function clean($content) {
   $string = str_replace(' ', '-', $content); // Replaces all spaces with hyphens.
   $string = preg_replace('/[^A-Za-z0-9\-]/', '', $content); // Removes special chars.

   return preg_replace('/-+/', '-', $string); // Replaces multiple hyphens with single one.
}

$result=mysql_query("update TABLE set content='$string' WHERE id='$id'");

2 个答案:

答案 0 :(得分:3)

您应该使用:http://php.net/manual/en/function.mysql-real-escape-string.php

因为它会自动转义任何特殊字符并帮助防止SQL注入

请注意该页面上强烈建议不推荐使用MySQL并使用MySQLi的大红色横幅。

MySQLi的例子是:

$Sql = new MySQLi("localhost", "username", "password", "database_name");

$stmt = $Sql->prepare("UPDATE table SET content = ? WHERE id = ?");
$stmt->bind_param('si', $string, $id);
$stmt->execute();
$stmt->close();

答案 1 :(得分:1)

有很多方法可以从字符串中删除不需要的字符。

addslashes()会在单引号和双引号http://php.net/manual/en/function.addslashes.php之前添加斜杠 htmlspecialchars()会将所有有问题的字符转换为HTML代码http://php.net/manual/en/function.htmlspecialchars.php

最后,最重要的是你的代码现在容易被mysql注入,以防止使用mysql_real_escape_string()来删除所有可能导致问题的字符http://php.net/manual/en/function.mysql-real-escape-string.php

您还应该考虑切换到MySQLi或PDO(我更喜欢PDO),因为有了它,您就会得到准备好的语句,而且您永远不会遇到这样的问题,也不会遇到安全问题。 MySQL已弃用,您的脚本将来无法使用。