再帰的に実行 | PHP

PHPでPOSTでされた値に変数と配列が混ざっている場合に、すべての値を再帰的に実行したい場合があります。

例えば入力フォームの確認画面などにPOSTした値をhtmlentitiesして出力する場合など。

すべての値をhtmlentitiesして、ついでに第3引数をtrueにするとnl2brする関数のサンプルです。
なお、引数の配列を上書きしてしまいますので注意してください。

function h($arr, $encoding='utf-8', $br=false) {
	foreach ($arr as $key => $val) {
		if (is_array($val)) {
			$arr[$key] = h($val, $br, $encoding);
		} else {
			if ($br) {
				$arr[$key] = nl2br(htmlentities($val, ENT_QUOTES, $encoding));
			}
			else {
				$arr[$key] = htmlentities($val, ENT_QUOTES, $encoding);
			}
		}
	}
	return $arr;
}

関数の呼び出し

h($_POST, 'utf-8', true)