【问题标题】:how to get value from url after using regular expression?使用正则表达式后如何从url获取值?
【发布时间】:2019-07-19 15:19:48
【问题描述】:

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

我有一些网址说,

$url1 = /profile/user/10/

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

url1的正则表达式,

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

url2 的正则表达式

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

说明, 我正在尝试检查我的路由文件夹中是否存在某个 url,我可以通过在 by 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'。

注意:(.*) 用于以某种方式获得所需的结果。

【问题讨论】:

  • 到目前为止您尝试了哪些方法,遇到了什么问题?
  • 你的正则表达式不正确,如果你的分隔符是/,你需要将/转义为\/
  • 你使用的是哪个框架
  • @NigelRen 当我将它与 '/profile/user/[0-9]+/$/ 进行比较时,我想从 $url1 = /profile/user/10/ 获取值 '10' '
  • @RahulMeshram,我没有使用任何框架,我正在尝试使用 PHP 为 Routes 提供框架使用的功能。

标签: php regex url routes


【解决方案1】:

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

这里是代码示例

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

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

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

如果您不确定索引,您可以遍历数组并在 profilesettings

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2022-11-18
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多