Извлечение чисел из строки. Почему я получаю два массива при использовании группы захвата?

Я пытаюсь извлечь числа из строки микширования.

<?php
$string = "c <a data-player-id=\"5528\" href=\"/players/5528-ga-name--5406546\" target=\"_self\">GA Name</a> b <a data-player-id=\"8992842\" href=\"/players/8992842-chandran-win--123345\" target=\"_self\">C Win</a>";

//preg_match_all('!\d+!', $string, $matches);
//preg_match_all('/data-player-id=\"(\d+)/', $string, $matches);
preg_match_all('/\/players\/(\d+)/', $string, $matches);
print_r($matches);

?>

Но в результате получается 2 массива:

Array
(
[0] => Array
(
[0] => /players/5528
[1] => /players/8992842
)

[1] => Array
(
[0] => 5528
[1] => 8992842
)

)

Я хочу, чтобы захватить такие номера, как 5528 а также 8992842, Код ниже не работает.

 /*
$zero = $matches[0];
$one = $matches[1];
$two = $matches[2];

echo $zero;
echo $one;
echo $two;
*/

Редактировать :
Есть идеи, почему он возвращается в 2 массива?
Можно ли считать вещи в array[1] ?

2

Решение

Ты можешь использовать foreach зациклить печать всех найденных значений в $matches[1]

Пытаться

$string = "c <a data-player-id=\"5528\" href=\"/players/5528-ga-name--5406546\" target=\"_self\">GA Name</a> b <a data-player-id=\"8992842\" href=\"/players/8992842-chandran-win--123345\" target=\"_self\">C Win</a>";preg_match_all('/\/players\/(\d+)/', $string, $matches);
//print_r($matches);foreach($matches[1] as $match)
{
echo $match."<br />";
}

выход

ОБНОВЛЕНИЕ 1

Да, вы можете сосчитать найденные элементы в $matches[1] используя count()

$total_matches = count($matches[1]);
echo $total_matches;
1

Другие решения

Попробуйте что-то вроде этого.

<?php
$string = "c <a data-player-id=\"5528\" href=\"/players/5528-ga-name--5406546\" target=\"_self\">GA Name</a> b <a data-player-id=\"8992842\" href=\"/players/8992842-chandran-win--123345\" target=\"_self\">C Win</a>";

preg_match_all('!\d+!', $string, $matches);

$arr = array_unique($matches[0]);

// For Count items...
$count = count($arr);
echo $count;

foreach($arr as $match)
{
echo $match."<br />";
}
?>

Выход

5528

5406546

8992842

123345

2

По вопросам рекламы [email protected]