PHP Parse String футбольного счёта

У меня есть строка в формате, показанном ниже, и я хочу извлечь следующие данные:
— Домашняя команда
— выездная команда
— счет домашней команды
— счет команды гостей

Мне удалось найти домашний счет и счет гостей, но мне трудно получить названия команд.

$str = "  20.45   Manchester United  4-2  Bayer Leverkusen";

preg_match('/(\d)-(\d)/', $str, $matches);

Заранее спасибо.

0

Решение

Если текст всегда будет одинаковым с несколькими пробелами между полями, вы можете воспользоваться этим.

[A-Z](?: ?\S)* будет соответствовать строке, которая начинается с заглавной буквы, за которой следуют непробельные символы, не более одного пробела между ними. Это будет соответствовать только до двух последовательных пробелов.

Так что можно сказать

$str = "  20.45   Manchester United  4-2  Bayer Leverkusen";

# Having it separate makes things less noisy and more self-documenting, IMO.
# But you can do the same thing inline if you want.
$team_name = '[A-Z](?: ?\S)*';
preg_match("/($team_name) +(\d+)-(\d+) +($team_name)$/", $str, $matches));

var_dump($matches);

и вывод (в любом случае в консоли) будет выглядеть

array(5) {
[0]=>
string(40) "Manchester United  4-2  Bayer Leverkusen"[1]=>
string(17) "Manchester United"[2]=>
string(1) "4"[3]=>
string(1) "2"[4]=>
string(16) "Bayer Leverkusen"}

Если вам нужно больше i18n, то [A-Z] может быть заменено \p{Lu} (если вы используете /u модификатор на шаблоне для включения режима UTF-8), [^\d\s], или даже \S, Но э.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]