Это одно решение.Дни, такие как «00», не допускаются.
$date = 'Fri, 18 Jun 10';
$regex = '#([A-Za-z]{3}), ((?:0[1-9])|(?:(?:1|2)[0-9])|(?:3(?:0|1))) ([A-Za-z]{3}) ([0-9]{2})#';
preg_match($regex, $date, $matches);
// Create Vars out of the matching...
$day_abbr = $matches[1];
$day = $matches[2];
$month_abbr = $matches[3];
$year = $matches[4];
Если вы хотите разрешить дни без начальных нулей, вам придется использовать это регулярное выражение (только что добавлен вопросительный знак. Это означает, что даты такие как «Солнце, 8 июня 10»"также действительны со следующим регулярным выражением.
$regex = '#([A-Za-z]{3}), ((?:0?[1-9])|(?:(?:1|2)[0-9])|(?:3(?:0|1))) ([A-Za-z]{3}) ([0-9]{2})#';