PHP Parse足球比分的字符串

时间:2014-09-16 23:27:12

标签: php string parsing

我有一个下面看到的格式的字符串,想要提取以下数据: - 主队 - 客场球队 - 主队得分 - 客队得分

我已经设法找到了主场得分和得分,但是我很难得到球队的名字。

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

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

提前致谢。

1 个答案:

答案 0 :(得分: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模式),{{1 },甚至[^\d\s]。但是呃。