// supondo que a data seja 20/09/2006
$data  = '20/09/2006';

usando express�o regular convertemos para 2006/09/20
$data = preg_replace("@(\d+)(\D\d+\D)(\d+)@","\\3\\2\\1",$data);

F�cil n�?
Se quiser validar a data pode-se fazer desta forma

// Aceita datas no formato 01/01/2006 ou 1/1/06 com qualquer separador. // Pode-se inclusive usar 01A01A2006 ou mesmo 01012006 se quiser (PS : O dia pode at� ter apenas um digito mas o mes nao se n�o usar separador)  :D

function validaData($data){
  if ( preg_match("@(\d{1,2})\D?(\d{1,2})\D?(\d{2,4})@",$data,$matches) ){
    list(,$dia,$mes,$ano) = $matches; // come�a com virgula mesmo
    if (checkdate($mes,$dia,$ano))
      // a data � valida e podemos inserir
      return array("dia"=>$dia,"mes"=>$mes,"ano"=>$ano,"dataMySQL"=>"{$ano}/{$mes}/{$dia}"); // retronando um vetor com dia,mes,ano e data completa no formato aceito pelo MySQL.
    return false; // "Data inv�lida!"; //   
  }
}

// Testando  (nao esquecer de incluir a fun��o acima
// coloque este script em um documento PHP e chame com arquivo.php?data=20-09-2006

------------------ Corte Aqui-------------------------------------
<?php
$data = (isset($_GET['data'])?$_GET['data']:false);
if ($data){
        echo "<h3>Data enviada para conversao  = > $data</h3>";
	$data2 = preg_replace("@(\d{1,2})(\D?\d{1,2}\D?)(\d{2,4})@","\\3\\2\\1",$data);
        echo "<h3>Data convertida  = > $data2</h3>";        
	if ($valores = validaData($data) ){
	  echo "<h3>A data passada � valida</h3><pre>";
	  print_r($valores);
	  echo "</pre>";
	}
	else
	  echo "<h2>Data Inv�lida</h2>";	
}
die("<h3>Nada Foi Passado!</h3>");
?>
------------------ Corte Aqui-------------------------------------