2015-11-03 55 views
0

我有一個表單頁面上下面的代碼每個數組元素不工作:array_walk_recursive應用功能在所有

array_walk_recursive($_POST, 'sanitize'); 

它是用來打完了,我可以附和每個表單字段內的$ _ POST變量用戶提交表單。

這裏是sanitize功能:

function sanitize ($v) { 
    return htmlspecialchars(trim($v), ENT_QUOTES); 
} 

這不是任何工作。 $ _POST數組仍然包含在頁面上打破錶單元素,當我輸入類似「「>休息」的價值有害引號。

任何幫助,將不勝感激。

+0

爲什麼不使用'array_map'? – aldrin27

+0

發佈您的陣列結構 –

回答

2

array_walk_recursive返回一個布爾值。你的函數不應該返回santized輸出,但簡單地操縱輸入此外,您可能需要聲明輸入作爲參考

試試這個變化給sanitize功能:。

function sanitize(&$item, $key) { 
    $item = htmlspecialchars(trim($item), ENT_QUOTES); 
} 
+0

偉大的答案,讓我瞭解這個問題。我最終使用'array_map'來代替。 – daygloink

0

繼承人我使用的解決方案(感謝aldrin27的評論):

$_POST = array_map('sanitize', $_POST); 
+0

它不會遞歸地執行它。 – zxcmehran

0

您可以使用引用。

array_walk_recursive($_POST, function(&$v) { 
     $v = sanitize($v); 
});