【发布时间】: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 提供框架使用的功能。