[英]How can I extract some parts of a PHP string that are separated by spaces
我的PHP字符串如下所示:
$test1= ' 1 AAA vs SSS ';
$test2= ' 2 GGG vs FFF ';
我需要從字符串中提取NUMBER和名稱:
[0] => stdClass Object
(
[no] => 1
[one] => AAA
[two] => SSS
)
我怎樣才能做到這一點?
^(\s| )*([0-9:]+)\s+(\S.*\S)\svs\s(\S.*\S)\s*$
在替換中,時間將在$ 1的主隊中在$ 2的客隊中在$ 3中(第三場比賽的比分將為0-3)
在您的PHP文件中:
$game1 = ' 04:60 FC Heidenheim 1846 vs SV Sandhausen ';
//I strip the 's first to have a simpler regexp
$game1 = str_replace(' ',' ',$game1);
preg_match ("@^\s*([0-9:]+)\s+(\S.*\S)\svs\s(\S.*\S)\s*$@", $game1, $matches);
$result =new stdClass;
$result->time = $matches[1];
$result->hometeam = $matches[2];
$result->awayteam = $matches[3];
var_dump( $result );
如果結構字符串不變,則應在字符串之后使用trim():
$game = trim($game);
$hour = substr($game,0,5);
$opponents = substr($game, 6);
$opponents = explode("vs",$opponents);
所以數組看起來
array(
'hour'=>$hour,
'home_team'=>$opponents[0],
'away_team'=>$opponents[1] );
我沒有測試,但看起來像這樣
我不知道PHP,但是您可以使用下面的正則表達式獲取值。 group 1
將有時間, group 2
將有主隊名稱, group 3
將有客隊名稱。
^([\d:]+)\s+([\w\s\d]+)\s+vs\s+([\w\s\d]+)\s?$
您可以嘗試類似的方法,
$test1= ' 1 AAA vs SSS ';
$test2= ' 2 GGG vs FFF ';
$test1 = dataFormatter($test1);
$test2 = dataFormatter($test2);
print_r($test1);
print_r($test2);
function dataFormatter($data)
{
$data= explode(" ",$data);
foreach($data as $value)
{
if($value && $value!= vs)
$newData[] = $value;
}
return $newData;
}
輸出:
Array
(
[0] => 1
[1] => AAA
[2] => SSS
)
Array
(
[0] => 2
[1] => GGG
[2] => FFF
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.