Как получить значение из URL после использования регулярного выражения? - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь настроить функции, используемые маршрутами, самостоятельно.

У меня есть URL-адрес, скажем,

$ url1 = / profile / user / 10 /

$ url2 = / profile / {some_variable} / settings / {some_integer}

Регулярное выражение для url1,

'/ profile / user / [0-9] + / $ / '

Регулярное выражение для url2

' / profile / [az] + / settings / [0-9] + / $ / '

Описание, я пытаюсь проверить, существует ли определенный URL-адрес в моей папке маршрутов, чего можно добиться с помощью preg_match () между url и регулярным выражением.

Я хочу получить значение '10' из

$ url1 = / profile / user / 10 /

и {some_variable}, {some_integer} из

$ url2 = / profile / {some_variable} / settings / {some_integer}

Чтобы я мог передать эти переменные в функции моего контроллера.

Пожалуйста, помогите.

Редактировать: у меня есть массив, который содержит регулярные выраженияПрименительно к URL-адресам. При обращении к URL-адресу я получаю этот URL-адрес и сопоставляю его в массиве, независимо от того, существует он или нет.Если это так, мне нужно получить переменные, используемые в URL.

Array (
    [specific_user] => Array
        (
            [url] => /profile\/user\/[0-9]+\/$/
            [className] => user
            [methodName] => userinfo
        )

    [specific_user_check] => Array
        (
            [url] => /profile\/user\/[a-z]+\/$/
            [className] => user
            [methodName] => userinfo
        )

    [user_settings] => Array
        (
            [url] => /profile\/user\/settings\/$/
            [className] => user
            [methodName] => settings
        )  )

Здесь

$ myUrl = / profile / user / 10 /

если $ myUrl совпадает с регулярным выражением в массиве, мне нужно получить значение '10'.

Примечание: (. *) Каким-то образом используется для получения желаемого результата.

1 Ответ

0 голосов
/ 26 февраля 2019

Вместо обычного выражения вы можете легко добиться этого с помощью PHP-функции explode().

Вот пример кода

$url2 = "/profile/some_variable/settings/10";

$url_values = explode("/",$url2);

$variable = $url_values[2];
$integer = $url_values[4];

, если вы не уверены в индексахВы можете зациклить массив и найти значение, следующее по следующему индексу: профиль и настройки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...