1 回答

TA貢獻1770條經(jīng)驗 獲得超3個贊
您的問題是重復捕獲組僅捕獲該組的最后一個匹配項,因此您的正則表達式不會捕獲5553(T)字符串的第二部分。使用兩步方法執(zhí)行此操作可能更簡單,首先匹配數(shù)字后面的部分 in {},然后將第二部分拆分為其組件:
$string = '182507 { 6661(T) }, 182514 { 5551(T), 5553(T), 5552(T) }';
preg_match_all('/(\d+)\s*{\s*([^}]+)\s*}/', $string, $matches);
$output = array();
foreach ($matches[1] as $key => $value) {
$output[$key] = array_merge(array($value), preg_split('/\s*,\s*/', $matches[2][$key]));
}
print_r($output);
輸出:
Array
(
[0] => Array
(
[0] => 182507
[1] => 6661(T)
)
[1] => Array
(
[0] => 182514
[1] => 5551(T)
[2] => 5553(T)
[3] => 5552(T)
)
)
- 1 回答
- 0 關(guān)注
- 129 瀏覽
添加回答
舉報