Heim >Backend-Entwicklung >PHP-Tutorial >php中的daddslashes()和saddslashes()的区别

php中的daddslashes()和saddslashes()的区别

WBOY
WBOYOriginal
2016-07-25 09:03:31968Durchsuche
  1. //----saddslashes

  2. function daddslashes($string, $force = 0, $strip = FALSE) {
  3. //字符串或数组 是否强制 是否去除
  4. //如果魔术引用未开启 或 $force不为0
  5. if(!MAGIC_QUOTES_GPC || $force) {
  6. if(is_array($string)) { //如果其为一个数组则循环执行此函数
  7. foreach($string as $key => $val) {
  8. $string[$key] = daddslashes($val, $force);
  9. }
  10. } else {
  11. //如果魔术引用开启或$force为0
  12. //下面是一个三元操作符,如果$strip为true则执行stripslashes去掉反斜线字符,再执行addslashes
  13. //$strip为true的,也就是先去掉反斜线字符再进行转义的为$_GET,$_POST,$_COOKIE和$_REQUEST $_REQUEST数组包含了前三个数组的值
  14. //这里为什么要将$string先去掉反斜线再进行转义呢,因为有的时候$string有可能有两个反斜线,stripslashes是将多余的反斜线过滤掉
  15.   $string = addslashes($strip ? stripslashes($string) : $string);
  16. }
  17. }
  18. return $string;
  19. }
  20. //------saddslashes

  21. function saddslashes($string) { if(!MAGIC_QUOTES_GPC){
  22. if(is_array($string)) { //如果转义的是数组则对数组中的value进行递归转义
  23.     foreach($string as $key => $val) {
  24.       $string[$key] = saddslashes($val);
  25.       }
  26. } else {
  27.     $string = addslashes($string); //对单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符),进行转义
  28. }
  29. return $string;
  30. }else{
  31. return $string;
  32. }
  33. ?>
复制代码

重点就是: saddslashes可以实现对每一个数据进行转义处理:

  1. function saddslashes($string) {
  2. if(is_array($string)) {
  3. foreach($string as $key => $val) {
  4. $string[$key] = saddslashes($val);
  5. }
  6. } else {
  7. $string = addslashes($string);
  8. }
  9. return $string;
  10. }
  11. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn