php - 使用正则表达式后如何从url获取值?
问题描述
我正在尝试自己制作路线使用的功能。
我有一些网址说,
$url1 = /profile/user/10/
$url2 = /profile/{some_variable}/settings/{some_integer}
url1 的正则表达式,
'/profile/user/[0-9]+/$/'
url2 的正则表达式
'/profile/[az]+/settings/[0-9]+/$/'
描述,我正在尝试检查我的路由文件夹中是否存在某个 url,我可以通过在 by url 和正则表达式之间使用 preg_match() 来实现。
我想从
$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'。
注意: (.*) 以某种方式用于获得所需的结果。
解决方案
您可以通过 PHP 函数轻松实现这一点,而不是使用正则表达式explode()
。
这里是代码示例
$url2 = "/profile/some_variable/settings/10";
$url_values = explode("/",$url2);
$variable = $url_values[2];
$integer = $url_values[4];
如果您不确定索引,您可以遍历数组并在下一个索引上找到值来配置文件和设置
推荐阅读
- laravel-8 - Kreait Firebase 异常 Invalid Argument Exception 具有权限的 URI 的路径必须以斜杠“/”开头或在 laravel8 中为空
- javascript - WebGL - Three.JS 和 Blazor 的黑色画布和控制台错误
- stored-procedures - 雪花存储在使用抛出错误而不是返回错误时给出不同的错误
- html - 遵循 html/css 教程后无法显示背景图像
- java - LDAP 身份验证异常错误代码 49
- javascript - 如何找到块数组中所有子数组的长度
- python - 如何将 keras 网络更改为 channels_last 而不是 channels_first?
- javascript - 垂直滚动实际上是使用鼠标滚轮库的水平滚动
- r - xlsx R:循环遍历文件列表以检查所有工作表名称;如果不存在则创建一个空白表
- cdi - 在 vaadin 7/8 和 14 中使用 CDI 功能