使用正则表达式后如何从url获取值?

时间:2019-02-26 06:15:43

标签: php regex url routes

我正在尝试自己使用路由功能。

我有一些网址说,

  

$ url1 = / profile / user / 10 /

     

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

url1的正则表达式,

  

'/个人资料/用户/ [0-9] + / $ /'

url2的正则表达式

  

'/ profile / [a-z] + / settings / [0-9] + / $ /'

说明, 我正在尝试检查我的路由文件夹中是否存在某个url,这可以通过在url和正则表达式之间使用preg_match()来实现。

我想从

获取值“ 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 :(得分:0)

您可以通过PHP函数explode()轻松实现正则表达式,而不是使用正则表达式。

这里是代码示例

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

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

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

如果不确定索引,则可以遍历数组并查找到下一个索引中的值,该值位于 profile settings < / em>