【问题标题】:replace a wildcard for url comparison替换通配符以进行 url 比较
【发布时间】:2016-01-10 23:50:28
【问题描述】:

我需要检查路由文件中的有效路由,我想在其中为动态 url 部分放置通配符(或占位符)。 路由器读取该json格式的所有路由:

{"action" : "BlogController@showPost", "method" : "GET", "url" : "showPost/id/{}"}

当比较发生时,我需要将持有者 {any} 更改为当前值,并可能允许将正则表达式放在 {any} 标记内。

这样的网址: showPost/id/211 必须与 showPost/id/{} 进行比较并且应该返回 true。如果可能的话,我希望允许将 {'[0-9]\'} 作为可选参数,以确保实际值与正则表达式匹配。

什么是最好的解决方案?

比较方法是这样的:

    public static function findAction($query) {
       foreach (Router::getInstance()->routes as $route) {
         if ($route->url == $query) {
             return $route;
         }
     }
}

$query 包含 /showPost/id/221,Router::getInstance()->routes->route->url 包含 showPost/id/{}

这篇文章与这个自动解决的问题有关: how to make nice rewrited urls from a router 为了避免重复,我不会重新发布路由器代码。

提前致谢

【问题讨论】:

    标签: php regex validation url-rewriting url-routing


    【解决方案1】:

    我找到了使用“?”的解决方案作为路由 json 文件的通配符。它可能不是最好的方法,但确实有效。 该方法现在用 ? 替换(并尝试检查)真实路径查询并检查每个周期的路线。

    public static function findAction($query) {
            //d($query);
            $queryArray = explode("/", $query);
            //d($queryArray);
               foreach (Router::getInstance()->routes as $route) {
                 if ($route->url == $query) {
                     // replace current routes url with incoming url
                     $route->url = $query;
                     return $route;
                 } else {
                     $queryReplace = null;
                     foreach ($queryArray as $key => $value) {
                         if (strpos($route->url,"?")) {
                             $queryReplace = str_replace("?", $value, $route->url);
                             if($queryReplace == $query) {
                                 $route->url = $query;
                                 return $route;
                             }
                         }
                     }
    
                 }
    

    我仍然想输入 {any or regex} 但 atm 我没有找到解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 2017-02-23
      • 2019-02-14
      • 2014-11-08
      • 1970-01-01
      相关资源
      最近更新 更多