$str = "Tuesday, February 21 at 7:30am at Plano B";
$time = strtotime(trim(substr($str,0,(strrpos("at"))));
echo "Date: " . strtoupper(date('D d M H:i', $time));
Что вы подразумеваете под "в Plano B необязательно".Это иногда там, иногда нет?
В противном случае:
$str = "Tuesday, February 21 at 7:30am at Plano B";
preg_match("/[a-z]+, ([a-z]+ [0-9]{1,2}) at ([0-9]{1,2}:[0-9]{1,2}[am|pm])/i", $str, $match);
$time = strtotime($match[1] + ' ' + $match[2]);
echo "Date: " . strtoupper(date('D d M H:i', $time));
Всегда ли это "Plano B" или пусто?или это также может быть "Plano A" или что-то совершенно другое?
Смотрите здесь: http://regexr.com? 2vvuj
Но вы пропустили год в начальной строке, так что не могу разобрать как strtotime.Также вы хотите вывод без am / pm. Вы хотите использовать 24-часовое время?
Это не очень хороший способ, но без года я не думаю, что у нас есть большой выбор ..
preg_match("/([a-z]+), ([a-z]+) ([0-9]{1,2}) at ([0-9]{1,2}:[0-9]{1,2})([am|pm])/i", $str, $match);
$day = substr($match[1], 0, 3);
$mon = substr($match[2], 0, 3);
echo strtoupper($day . " " . $match[3] . " " . $mon . " " . $match[4]);