php正则表达式可占位,关于php:URL路由占位符匹配正则表达式

我正在构建自己的框架以用于学习目的,到目前为止,除了路由之外,到目前为止一切进展顺利。

可以说url是localhost / admin / view,我没有问题将该路由与正确的控制器和操作进行匹配。 当url具有如下所示的ID时,就会出现此问题:localhost / admin / view / 12。 我试图在我的路由数组(框架方法)中使用占位符,该数组包含已定义的路由以与url匹配。

路由数组如下所示:

public function getRoute() {

$this->route = array(

[

'url' =>"admin/view",

'controller' => 'AdminController',

'action' => 'viewPosts',

'type' => 'GET'

],

[

'url' =>"admin/view/{id}",

'controller' => 'AdminController',

'action' => 'viewPostById',

'type' => 'GET'

],

[

'url' =>"admin/store/posts",

'controller' => 'AdminController',

'action' => 'storePosts',

'type' => 'POST'

],

);

}

我不知道如何将url与具有占位符的路由数组中的值匹配。 就像URL如果是localhost / admin / view / 1一样,如何将其与数组中的admin / view / {id}值匹配? 然后,如何从URL轻松获取GET参数? 我知道获取参数不应该太难,但是我试图在不爆炸url的情况下获取它们并进行过多的操作(也许使用正则表达式?)。

您应该在路由匹配中使用其他方法。 我建议您看看其他框架如何使用它(搜索并了解.htaccess的工作方式)。

因此,如果使用admin / view / {id},则应使用正则表达式来处理匹配项,您可以考虑以下内容:admin/view/.*

对于这种情况,admin/view/之后的所有内容都将作为您的ID。

您还可以阅读cakephp等其他框架的文档:https://book.cakephp.org/3.0/en/development/routing.html

在php中,我们具有获取查询字符串的功能:$ _SERVER ['QUERY_STRING'](http://se2.php.net/reserved.variables.server.php)

问候。

也许我没有很好地解释它,但是我的.htaccess像框架一样使用干净的URL将所有内容重定向到index.php。 我只是要求使用{id}之类的占位符,因为那是laravel的工作方式。 顺便说一句,admin / view /.*我已经尝试过与admin / view /。 d * $类似的东西,但是我发现我不太想与占位符一起使用。 您介意解释一下框架的内部机制通常如何用于路由,而不是如何使用它们,而是更像框架处理URL的方式,即拆分和分派等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值