2011-12-10 7 views
5

Ho un array di valori che vorrei correre attraverso htmlspecialchars ma con un argomento come questo:C'è un modo per inviare parametri in una funzione di callback senza creare prima la mia funzione?

$param = htmlspecialchars($param, ENT_QUOTES); 

Il problema è, ho un array di valori che voglio correre htmlspecialchars on:

$array = array_map('htmlspecialchars', $array); 

e mi piacerebbe sapere se c'è un modo per passare ENT_QUOTES nel callback array_map?

Posso sempre utilizzare la mia funzione che utilizza htmlspecialchars, ma sarebbe bello se ci fosse un modo per farlo già.


Dopo la risposta di seguito, ecco il mio risultato finale:

$array = array_map('htmlspecialchars', $array, array_fill(0, count($array), ENT_QUOTES)); 

che riempie semplicemente un array con tanti valori da $ array ha ed è pieno di ENT_QUOTE.

risposta

3

Questo dovrebbe funzionare se si passa un secondo array come parametro per array_map che conterrà ben ENT_QUOTES elementi come il tuo numero di elementi in $array:

$quote_style = ENT_QUOTES; 
$array = array('"',"'","''''''''''''\""); 
$ent_quotes_array = array($quote_style, $quote_style, $quote_style); 
$array = array_map('htmlspecialchars', $array, $ent_quotes_array); 
print_r($array); 

Oppure, un po 'più elegante:

$array = array('"',"'","''''''''''''\""); 
$ent_quotes_array = array_fill(0, sizeof($array), ENT_QUOTES); 
$array = array_map('htmlspecialchars', $array, $ent_quotes_array); 
+1

In questo caso, array_fill funziona per ciò di cui ho bisogno. Grazie –

0

Qui è la mia funzione di uscita di supporto ...

function change_values_for_encode_output(&$item, $key) { 
    $item = htmlentities($item, ENT_QUOTES); 
} 

function encode_output_vars($vars) { 
    if(is_array($vars)) { 
     array_walk_recursive($vars, 'change_values_for_encode_output'); 
     return $vars; 
    } 
    else { 
     $vars = htmlentities($vars, ENT_QUOTES); 
        return $vars; 
    } 
} 
+0

Questo non è quello che stavo cercando. Come ho detto, stavo cercando un modo per farlo senza creare una nuova funzione per il callback. –

Problemi correlati