<?
function slashescode($vars,$code)
{
 $mg_state = get_magic_quotes_gpc();
 foreach($vars as $val)
 {
  switch($code)
  {
   case "addslashes"://这里有个拼写错误
       if(!$mg_state)
       {
        $val = $code($val);
         $mg_state = 1;
       }
       break;
   case "striplashes":
       if($mg_state)
       {
        $val = $code($varl);
        $mg_state = 0;
       }
       break;
  }
 }
 return $val;//这里需要返回$val
}
$a= array("cn"=>"chinese","c"=>"china");
$b= slashescode($a,"addslashes");
echo $b;
?>

解决方案 »

  1.   

    不知道是不是这个意思
    <?php
    function slashescode($vars,$code)
    {
      $mg_state = get_magic_quotes_gpc();
      foreach($vars as $key => $val)
      {
        switch($code)
        {
          case "addslahes":
               if(!$mg_state) {
                 $vars[$key] = $code($val);
                 $mg_state = 1;
               }
               break;
          case "stripslashes":
               if($mg_state) {
                 $vars[$key] = $code($val);
                 $mg_state = 0;
               }
               break;
        }
      }
      return $vars;
    }
    $a= array("cn" => "chin\'ese", "c" => "china");
    print_r($a);
    $b= slashescode($a, "stripslashes");
    print_r($b);
    ?>
      

  2.   

    <?php
    function slashescode($vars,$code)
    {
      $mg_state = get_magic_quotes_gpc();
      foreach($vars as $key => $val)
      {
        switch($code)
        {
          case "addslashes":
               if(!$mg_state) {
                 $vars[$key] = $code($val);
                 $mg_state = 1;
               }
               break;
          case "stripslashes":
               if($mg_state) {
                 $vars[$key] = $code($val);
                 $mg_state = 0;
               }
               break;
        }
      }
      return $vars;
    }
    $a= array("cn" => "chin\'ese", "c" => "china");
    print_r($a);
    $b= slashescode($a, "addslashes");
    print_r($b);
      

  3.   

    function slashescode($vars,$code)
    {
      $mg_state = get_magic_quotes_gpc();
      foreach($vars as $key => $val)
      {
        switch($code)
        {
          case "addslashes":
               if(!$mg_state) {
                 $vars[$key] = $code($val);
               }
               break;
          case "stripslashes":
               if($mg_state) {
                 $vars[$key] = $code($val);
               }
               break;
        }
      }
      return $vars;
    }
    需要注意的是:这跟magic_quotes_gpc()的值有关的,另外还需要GET/POST/Cookie data.你用一个表单试一下就不一样了。
    如果你用以下代码测试,那么只有当magic_quotes_gpc()的值为0的时候才会不一样的。
    $a= array("cn" => "chin\'ese", "c" => "china");
    print_r($a);
    $b= slashescode($a, "addslashes");
    print_r($b);