将一个字符串分成4个不同的字符串?

时间:2013-09-05 00:42:24

标签: php

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

NY Mets 5 Atlanta 2

分为4个字符串:

$team1
$team1score
$team2
$team2score

我可以得到第一个字,但就是这样。即使这样也不对,因为纽约大都会队就像纽约一样弹出。

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

非常感谢一些方向感。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

$gamestring="NY Mets 5 Atlanta 2";
$words = explode(" ",$gamestring);
for($i=0;$i<sizeof($words);$i++){
    echo($words[$i]."<br/>");   
}

答案 2 :(得分:0)

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

-Frank

答案 3 :(得分: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 />";