Распарсить строку с помощью preg_match

230
16 ноября 2017, 05:36

Имеются такие данные:

$pattern = "/статьи/администрирование/([0-9])+/([0-9])+/";
$string  = "/статьи/администрирование/129/123/";

Мне нужен какой-то механизм, который мог бы выудить из $string числа 129 и 123, при чем $pattern может меняться, например, если он будет таким:

  $pattern = "/статьи/администрирование/([0-9])+/";

а $string такой:

 $string  = "/статьи/администрирование/129/";

то вытянуть нужно будет число 129.

Я сделал так:

if(preg_match("~$pattern ~", $string ,$matches)){
                echo "<pre>";
                print_r($matches);
                echo "</pre>";
}

Но получил в массиве $matches не то что нужно, а именно:

Array
(
    [0] => /статьи/администрирование/129/123/
    [1] => 9
    [2] => 3
)

Как сделать так, чтобы в массиве было это:

Array ( [0] => /статьи/администрирование/129/123/ [1] => 129 [2] => 123 )

Answer 1

Кроме замечаний в комментариях, вам надо заменить ограничители в шаблоне (чтоб не экранировать слеши)

$string  = '/статьи/администрирование/129/123/';
$pattern = '~/статьи/администрирование/(\d+)/(\d+)/~';
preg_match($pattern, $string, $arr);
var_dump($arr);
READ ALSO
вывод телефона в сообщение при отправки письма через форму

вывод телефона в сообщение при отправки письма через форму

Есть форма отправки сообщения, есть поле email, из него нужно сделать поле с телефоном, и что бы телефон был в письме вместе с сообщением:

254
приватный метод область видимости

приватный метод область видимости

Почему возникает ошибка PHP Fatal error: Class 'user\login\SystemCommand\DateTime' not found in

247
Php MySql на ноуте работает, на телефоне - нет

Php MySql на ноуте работает, на телефоне - нет

На ноуте установлен серве XAMPP и он работает вполне отлично, на телефоне https://bitbucketorg/esminis/server/wiki/Home из этой серии Server for PHP (PHP) и MariaDB Server (MariaDB)

230
Авторизация на сайте по кукам

Авторизация на сайте по кукам

Скажите пожалуйста, вот у меня есть форма авторизации, классика логин и пароль, и можно как-то один раз авторизоваться по логину и паролю,...

303