所以这是场景,我有以下字符串:
Detroit 7 Chicago 13 (FINAL)
我希望它返回一个数组,如下所示:
array() {
["T1_Name"]=>"Detroit"
["T1_Score"]=>"7"
["T2_Name"]=>"Chicago"
["T2_Score"]=>"13"
["Quarter"]=>"FINAL"
}
诀窍是它不能以空格分隔,因为名称中有空格的城市,分数也可能是一位或两位数。
答案 0 :(得分:1)
$subject = 'Detroit 7 Chicago 13 (FINAL)';
$matches = array();
if (preg_match('~^(.+) ([0-9]{1,2}) (.+) ([0-9]{1,2}) \((.+)\)$~i', $subject, $matches)) {
var_dump($matches);
$result = array(
'T1_Name' => $matches[1],
'T1_Score' => $matches[2],
'T2_Name' => $matches[3],
'T2_Score' => $matches[4],
'Quarter' => $matches[5],
);
}
var_dump($result);
这样的事情应该这样做。
答案 1 :(得分:0)
<强> PHP preg_match 强>
或许这样的事情?
preg_match('/([a-zA-Z\s]+?)[\s]+([\d]+)([a-zA-Z\s]+?)[\s]+([\d]+)[\s]+\(([\w]+)\)/', "Detroit 7 Chicago 13 (FINAL)", $matches);
print_r($matches);