Вот пример строки:
$text = 'foo (20/50) bar () baz (11/30)';
Мне нужен следующий вывод:
$items = array(
array(
"title" => "foo",
"number" => 20
),
array(
"title" => "bar",
"number" => 0
)
array(
"title" => "baz",
"number" => 11
)
);
Попытка
До сих пор я использовал
$matches_title = array();
$matches_number = array();
preg_match_all('!([^\s]+)!',$text,$matches_title);
preg_match_all('!(?<=\()(\d+)(?=\/)!',$text,$matches_number);
А затем перебираем совпадения, чтобы поймать значения.Очевидно, что это не работает, когда одна из скобок пуста, так как оба массива будут иметь разную длину.
Как мне решить эту проблему?