if (preg_match_all("/!ban ........./i", "!ban 401662529", $arr)) {
$k = var_dump($arr);
var_export($k);
}
Вот тут я получил массив ($arr[0]), что равно !ban 40166252,
Ожидаемый результат:
Array {
[0] => "!ban"
[1] => "40166252"
}
Полученный:
Array {
[0] => "!ban 40166252"
}
Используйте захватывающие подмаски, (!ban)\s+(\d+):
if (preg_match_all("/(!ban)\s+(\d+)/i", "!ban 401662529", $arr, PREG_SET_ORDER, 0)) {
array_shift($arr[0]);
print_r($arr[0]);
}
// = Array ( [0] => !ban [1] => 401662529 )
См. демо на PHP.
Подробности
(!ban) - Захватывающая подмаска №1: строка !ban\s+ - 1 и более пробельных символов(\d+) - Захватывающая подмаска №2: одна и более цифр.Аргумент PREG_SET_ORDER группирует совпадения с захваченными подстроками, а array_shift удаляет полное совпадение.
Продвижение своими сайтами как стратегия роста и независимости