2010-08-06 17 views

Respuesta

21
foreach ($your_array as $key=>$value) { 
$your_array[$key] = stripslashes($value); 
} 

o para muchos niveles variedad utilizar este:

function stripslashes_deep($value) 
{ 
    $value = is_array($value) ? 
       array_map('stripslashes_deep', $value) : 
       stripslashes($value); 

    return $value; 
} 


$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar")); 
$array = stripslashes_deep($array); 

print_r($array); 
+0

Posiblemente no pueda darte suficientes votos a favor :) Después de pasar todo el día probando cada solución que pude encontrar y pensar (tanto en jQuery como en php) para resolver el maldito escape de maldiciones dobles del maldito objeto json, tu solución funcionó ¡¡como un encanto!! :) – Aleksej

5

Usted puede utilizar array_map:

$output = array_map('stripslashes', $array); 
+0

Esto da advertencia: stripslashes() espera que el parámetro 1 sea string, – Starx

+0

@jdoef: ¿Entonces su matriz no solo contiene cadenas? – Gumbo

+0

no necesariamente. no puede el script comprobar si es una cadena y luego solo quitar las barras – Starx

0

gama Analizar recursevely, con esta solución no tiene que doblar su matriz

function addslashes_extended(&$arr_r){ 
    if(is_array($arr_r)) 
    { 
     foreach ($arr_r as &$val){ 
      is_array($val) ? addslashes_extended($val):$val=addslashes($val); 
    } 
     unset($val); 
    } 
    else 
     $arr_r=addslashes($arr_r); 
return $arr_r; 
} 
11

Para las matrices unidimensionales, array_map hará:

$a = array_map('stripslashes', $a); 

Para matrices multidimensionales que puede hacer algo como:

$a = json_decode(stripslashes(json_encode($a)), true); 

Este último puede ser utilizado para fijar magic_quotes, ver this comment.

+0

Eso es bastante brillante. – Jake

3

me encontré con esta clase/función

<?php 
/** 
* Remove slashes from strings, arrays and objects 
* 
* @param mixed input data 
* @return mixed cleaned input data 
*/ 
function stripslashesFull($input) 
{ 
    if (is_array($input)) { 
     $input = array_map('stripslashesFull', $input); 
    } elseif (is_object($input)) { 
     $vars = get_object_vars($input); 
     foreach ($vars as $k=>$v) { 
      $input->{$k} = stripslashesFull($v); 
     } 
    } else { 
     $input = stripslashes($input); 
    } 
    return $input; 
} 
?> 

en este blog y realmente me ayudó, y ahora podría pasar variables, matrices y los objetos a lo largo de la misma función ...

+0

+1, Nice Thanks – Starx

-1

Cualquier recursiva función para la matriz:

$result= Recursiver_of_Array($array, 'stripslashes');

código:

function Recursiver_of_Array($array,$function_name=false){ 
    //on first run, we define the desired function name to be executed on values 
    if ($function_name) { $GLOBALS['current_func_name']= $function_name; } else {$function_name=$GLOBALS['current_func_name'];} 
    //now, if it's array, then recurse, otherwise execute function 
    return is_array($array) ? array_map('Recursiver_of_Array', $array) : $function_name($array); 
} 
+0

Creo que una respuesta del usuario de 12K debe ser más descriptiva y no tan alta. – Starx

Cuestiones relacionadas