デモ

array(2) { ["neko"]=> string(9) "" [0]=> array(3) { [0]=> string(5) "<>&"'" [1]=> int(122) [2]=> array(2) { ["dog"]=> string(5) "犬">" ["pig"]=> NULL } } } エスケープ後↓
array(2) { ["neko"]=> string(15) "<input />" [0]=> array(3) { [0]=> string(25) "<>&"'" [1]=> int(122) [2]=> array(2) { ["dog"]=> string(13) "犬">" ["pig"]=> NULL } } }


XML用の記号エスケープ関数のソースコード

/**
 * XML用の記号エスケープ関数
 * 
 * @note
 * 記号「 &<>"' 」をXML用にエスケープする
 * 
 * @param any $data
 * @return エスケープ後のデータ
 */
function escapeMarkForXML($data){

	if(is_array($data)){
		foreach ($data as $key => $v){
			$data[$key] = escapeMarkForXML($v);
		}
		return $data;
	}else{
		if(gettype($data) == 'string'){
			
			$search = array('&','<','>','"',"'");
			$replace = array('&amp;','&lt;','&gt;','&quot;','&apos;');
			
			$data = str_replace($search, $replace, $data);
		}
		return $data;
	}
}