--TEST-- abusing preg_match() --FILE-- (?P(\d{2})?\d\d) - (?P(?:\d\d|[a-zA-Z]{2,3})) - (?P[0-3]?\d)) ~x', $s, $m)); var_dump($m); } ?> --EXPECT-- int(1) array(10) { [0]=> string(10) "2006-05-13" ["date"]=> string(10) "2006-05-13" [1]=> string(10) "2006-05-13" ["year"]=> string(4) "2006" [2]=> string(4) "2006" [3]=> string(2) "20" ["month"]=> string(2) "05" [4]=> string(2) "05" ["day"]=> string(2) "13" [5]=> string(2) "13" } int(1) array(10) { [0]=> string(8) "06-12-12" ["date"]=> string(8) "06-12-12" [1]=> string(8) "06-12-12" ["year"]=> string(2) "06" [2]=> string(2) "06" [3]=> string(0) "" ["month"]=> string(2) "12" [4]=> string(2) "12" ["day"]=> string(2) "12" [5]=> string(2) "12" } int(1) array(10) { [0]=> string(8) "12-Aug-8" ["date"]=> string(8) "12-Aug-8" [1]=> string(8) "12-Aug-8" ["year"]=> string(2) "12" [2]=> string(2) "12" [3]=> string(0) "" ["month"]=> string(3) "Aug" [4]=> string(3) "Aug" ["day"]=> string(1) "8" [5]=> string(1) "8" } --UEXPECT-- int(1) array(10) { [0]=> unicode(10) "2006-05-13" [u"date"]=> unicode(10) "2006-05-13" [1]=> unicode(10) "2006-05-13" [u"year"]=> unicode(4) "2006" [2]=> unicode(4) "2006" [3]=> unicode(2) "20" [u"month"]=> unicode(2) "05" [4]=> unicode(2) "05" [u"day"]=> unicode(2) "13" [5]=> unicode(2) "13" } int(1) array(10) { [0]=> unicode(8) "06-12-12" [u"date"]=> unicode(8) "06-12-12" [1]=> unicode(8) "06-12-12" [u"year"]=> unicode(2) "06" [2]=> unicode(2) "06" [3]=> unicode(0) "" [u"month"]=> unicode(2) "12" [4]=> unicode(2) "12" [u"day"]=> unicode(2) "12" [5]=> unicode(2) "12" } int(1) array(10) { [0]=> unicode(8) "12-Aug-8" [u"date"]=> unicode(8) "12-Aug-8" [1]=> unicode(8) "12-Aug-8" [u"year"]=> unicode(2) "12" [2]=> unicode(2) "12" [3]=> unicode(0) "" [u"month"]=> unicode(3) "Aug" [4]=> unicode(3) "Aug" [u"day"]=> unicode(1) "8" [5]=> unicode(1) "8" }