Парсинг строк в php

120
07 декабря 2019, 02:40
 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"
    }
Answer 1

Используйте захватывающие подмаски, (!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 удаляет полное совпадение.

READ ALSO
json в array на php

json в array на php

получаю при помощи file_get_contents() вот такое дело

113
Проблема с src и переменной

Проблема с src и переменной

Сделал переменную в которо хранится конкретное число из бд mysql

133
Как разделить рандомное число на цифры? PHP

Как разделить рандомное число на цифры? PHP

У на есть рандомное число, например 03198319 (количество символов также всегда разное)Как разделить его на числа и добавить их в массив, используя...

125
Платёжная система для сайта

Платёжная система для сайта

Посоветуйте платёжную систему, чтобы на сайте можно было рассчитываться кредитной картой и аудитория сайта будет зарубежная (Европа, США)Плагин...

120