0

我怎么能在php中分解这个字符串?

纽约大都会 5 亚特兰大 2

分成4个字符串:

$team1
$team1score
$team2
$team2score

我可以得到第一个词,但就是这样。甚至那也不应该是正确的,因为 NY Mets 只是以 NY 的形式出现。

$words = explode(' ', $gamestring);
$first_word = $words[0];

一些方向感将不胜感激。

4

4 回答 4

1

您需要定义要查找的模式。例如,您可以使用此正则表达式来查找...

字符串开头的任意数量的字符,然后是空格,然后是数字,然后是空格,然后是任意数量的字符,然后是空格,然后是字符串末尾的数字

if (preg_match('/^(.*?) (\d+) (.*?) (\d+)$/', $string, $matches)) {
    $team1 = $matches[1];
    $team1score = $matches[2];
    $team2 = $matches[3];
    $team2score = $matches[4];
}

在这里演示 - http://codepad.viper-7.com/5LZf4O

于 2013-09-05T00:49:05.520 回答
0

另一种方法是使用list(...)

$gamestring = "NY Mets 5 Atlanta 2";
preg_match("/(.*?) (\d+) (.*?) (\d+)/", $gamestring, $matches);
list(, $team1, $team1score, $team2, $team2score) = $matches;

echo "Team 1 = " . $team1 . "<br />";
echo "Score = " . $team1score . "<br /><br />";
echo "Team 2 = " . $team2 . "<br />";
echo "Score = " . $team2score . "<br />";
于 2013-09-05T01:21:45.447 回答
0

我不知道你打算做什么,但使用爆炸,你总是可以这样做。

你也可以尝试 pregmatch 和 strpos 函数来做同样的事情。

$gamestring="NY Mets 5 Atlanta 2";
$words = explode(" ",$gamestring);
for($i=0;$i<sizeof($words);$i++){
    echo($words[$i]."<br/>");   
}
于 2013-09-05T00:45:26.110 回答
0

使用explode 将根据分隔符创建一个字符串数组。您正在使用空格字符,这就是为什么您的第一个单词只是 NY 而不是 NY Mets。如果这是您的模式并且您想要使用,这意味着它将是 City、Team #1、Team #1 Score、Team #2、Team #2 score,您可以将其分解并连接数组的任何元素一起得到你想要的。所以如果你想要这样的城市和团队名称,你会做 $team1 = $words[0] 。“”。$字[1]; 例如,您可以将其打印出来并获得 NY Mets。我希望这会有所帮助!

-坦率

于 2013-09-05T01:15:36.037 回答