/**
	 * Função que converte uma data em timestamp. Funcionamento semelhante a strotime
	 * com a adição de suporte a correta conversão de datas no formato brasileiro,
	 * datas passadas sem separadores (muito comum em sistemas bancários) 
	 * e datas com valor zerado (data nula no MySQL por exemplo) 
	 * @param string $data
	 * @return int 
	 */
	static public function _strtotime($data=null){
		if ($data==NULL) return NULL;
		$data = preg_replace("#[\/]+0?#","-",$data);		
		if(strlen($data)<8){
			$data = preg_replace("#^(\d+)\D(\d+)\D(\d+)$#","$3-$2-$1",$data);
		}
		return strtotime($data,time());
	}

	/**
	 * Converte uma data passada em qualquer formato para um formato de saída
	 * Obs.: Datas passadas com separadores (Qualquer Caracter não numérico)
	 * Têm mais chances de ser convertida corretamente
	 * Datas sem separadores serão tratados como DiaMesAno caso
	 * não seja passado o formato da data passada
	 * Exemplos.: 
	 * converterData('2008/03/16') retorna 16/03/2008
	 * converterData('2008-3-16') retorna 16/03/2008
	 * converterData('2008-3-16',dmY) retorna 16032008
	 * converterData('20080316') retorna 16/03/2008 
	 * converterData('16032008') retorna 31/12/1969 (falha porque tenta usar a data como 1603/20/08)
	 * converterData('16032008','Ymd','dmY') retorna 16032008
	 * converterData('16032008','r','dmY')
	 * converterData('16032008','r','dmY') 
	 * Sun, 16 Mar 2008 00:00:00 -0300
	 * @param string {data} A data a ser convertida
	 * @param string {mascara} A máscara de saída da função (Utiliza a sintaxe de date())
	 * @param string {formato} Define como a data passada deve ser tratada caso a 
	 * data seja passada sem separadores (Utilizar o formato de datas GNU)
	 */
	function converterData($data,$mascara='d/m/Y',$formato='Ymd'){
		if(!preg_match("#^\d(1,2)\D\d{1,2}\D\d{1,2}$#",$data) && preg_match("#\D#",$data)){
			$stamp =  _strtotime($data,time());
		}else{
			$trans = array('d'=>'(\d{2})',
							'm'=>'(\d{2})',
							'y'=>'(\d{1,2})',
							'Y'=>'(\d{2,4})');
			$replace = str_replace('d','$3',$formato);
			$replace =str_replace('m','$2',$replace);
			$replace =str_replace('Y','$1',$replace);
			$replace =str_replace('y','$1',$replace);
			$regex = strtr($formato,$trans);
			$dt = preg_replace("#$regex#","$replace",$data);
			$stamp = strtotime($dt,time());			
		}
		return date($mascara,$stamp);
	}