我正在尝试自己使用路由功能。
我有一些网址说,
$ 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'。
注意:(。*)用于获得预期结果。
答案 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>