2011-12-10 6 views
5

Ben htmlspecialchars'dan ama bunun gibi bir argümanla çalıştırmak istediğiniz değer dizisi var

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

ve ENT_QUOTES öğesini array_map geri çağrısına geçirmenin bir yolu olup olmadığını bilmek ister misiniz?

Her zaman htmlspecialchars kullanan kendi işlevlerimi kullanabilirim, ancak bunu zaten yapmanın bir yolu olsaydı iyi olurdu. $ Dizi vardır ve ENT_QUOTE ile dolu kadar basit bir şekilde birçok değerlerle bir dizi doldurur

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

: Aşağıdaki cevap sonra


, burada sonumun sonucudur.

cevap

3

İkinci $array öğelerin sizin sayısı kadar ENT_QUOTES unsurları içerecektir array_map için parametre olarak dizi geçirirseniz Bu çalışması gerekir: daha şık

$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); 

Veya biraz:

İşte
+1

Bu durumda, array_fill ihtiyacım olan şey için çalışıyor. Teşekkürler –

0

$array = array('"',"'","''''''''''''\""); 
$ent_quotes_array = array_fill(0, sizeof($array), ENT_QUOTES); 
$array = array_map('htmlspecialchars', $array, $ent_quotes_array); 
... benim çıkış yardımcı fonksiyonudur

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

Bu benim aradığım şey değil. Bahsettiğim gibi, geri arama için yeni bir işlev oluşturmadan bunu yapmak için bir yol arıyordum. –

İlgili konular