首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除特殊字符

问删除特殊字符
EN

Stack Overflow用户
提问于 2015-08-06 10:07:24
回答 2查看 2.4K关注 0票数 2

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

用户在WYSWIG编辑器中输入文本,然后单击save,然后将数据保存到DB中。

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

我已经试过下面的方法了,但是没有用,有人能告诉我吗?

代码语言:javascript
复制
$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'");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-06 10:11:44

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

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

请注意页面上的大红横幅,它强烈建议不要使用MySQL,而应该使用MySQLi。

MySQLi的一个例子是:

代码语言:javascript
复制
$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();
票数 3
EN

Stack Overflow用户

发布于 2015-08-06 10:16:07

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

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是不推荐的,您的脚本在未来将无法工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31852884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档