Okay, my explosive friend, let me try again.
I suggested looking into strtotime() and date().
What I meant was use strtotime() to get the timestamp of the data and use date() to generate the correctly arranged date.
$time="11-21-2001";
$time = str_replace("-","/", $time);
$time = strtotime($time);
$str = date("Y-m-d", $time);
echo "$str <BR>";
This works.
However, it doesn't help you because you are concerned with people entering data in a format not recognized by strtotime() (day, month, year rather then month day year or year month day).
You could use the explode function as suggested before and add an if statement to check if the first segment is greater then 1000 - that would prevent the reversal of the correct entry.
-Ben