A-A+

PHP对于接受特殊字符的处理

2016年06月19日 PHP技术文章 暂无评论 阅读 6 views 次

最近刚刚弄完一个企业网站,遇到了一个插入SQL语句的问题,因为这个企业站有英文站点,所以在插入的时候难免会有类似于单引号('),双引号( " ),反斜杠(/)这类的字符,所以在正常的 SQL 语句中是没有办法插入的,一直显示插入失败,像这类字符如果没有经过任何的处理,就直接插入 sql 里面,sql 在接受的时候会把这类的字符当成自己的一部分,所以会插入失败,解决的方法也很简单,在接受到这些字符的时候进行转义,这样告诉 sql 这个只是一个字符而已。

PHP中提供了两个关于特殊字符的处理函数,分别是 addslashes() 和 stripslashes():,其中  addslashes() 是进行转义的,是为特殊字符添加上反斜杠的,是在插入的时候使用的,而 stripslashes() 则是在读取的时候进行反转义的,把添加的反斜杠去掉,这样就会显示正常的内容了。

下面夏日博客演示两个简单的例子。

addslashes() 例子如下:

  1. <?php
  2. $str = "Who's John Adams?";
  3. echo $str . " This is not safe in a database query.<br />";
  4. echo addslashes($str) . " This is safe in a database query.";
  5. //xiariboke.com
  6. ?>

输出的结果为:

  1. Who's John Adams? This is not safe in a database query.
  2. Who\'s John Adams? This is safe in a database query.

可以看出第一个结果是原生字符,第二个结果是添加了反义 / 后的处理结果,这样就可以进行 SQL 的插入了。

stripslashes() 实例如下:

  1. <?php
  2. echo stripslashes("Who\'s John Adams?");
  3. ?>

输出的结果如下:

  1. Who's John Adams?  

可以看得出来,stripslashes() 的实例很简单,就是把  addslashes() 添加的反斜杠给去掉,还原正常的字符串读取出来。

标签:

给我留言