【问题标题】:Remove slash from final string and GET从最终字符串和 GET 中删除斜杠
【发布时间】:2014-07-04 18:34:08
【问题描述】:

之前我使用http://localhost/profile.php?username=joe,但现在我使用htaccess 使URL 看起来不错,所以这就是现在http://localhost/joe 的样子。现在问题来了,在我这样做之前

$username = $_GET['username'];

然后用它来获取用户名,但是现在我该怎么做呢?我看过其他帖子,但它们似乎使用更长更复杂的 URL。

我能做到

$url = 'http://localhost/joe';
echo parse_url($url, PHP_URL_PATH);

它似乎工作正常,但我在实际结果之前得到了/,所以我得到了/joe,我想要joe。我也尝试过stripslashes,但这似乎不起作用。那么有什么想法吗?

【问题讨论】:

    标签: php .htaccess url


    【解决方案1】:

    修剪左侧站点上的结果以避免删除或替换作为实际值一部分的斜线。

    $result = ltrim($path, '/');
    

    【讨论】:

      【解决方案2】:

      您也可以使用explodearray_pop

      $url = 'http://localhost/joe';
      echo array_pop(explode("/", $url))
      

      【讨论】:

        【解决方案3】:

        使用str_replace()。像这样

        $url = 'http://localhost/joe';
        $final =  parse_url($url, PHP_URL_PATH);
        $result = str_replace('/','',$final);
        echo $result;
        

        stripslashes() 适用于反斜杠,而不是正斜杠

        【讨论】:

          【解决方案4】:

          只需一个substr 电话也应该可以工作:

          $url = 'http://localhost/joe';
          echo substr(parse_url($url, PHP_URL_PATH), 1); // joe
          

          【讨论】:

            【解决方案5】:

            您可以了解路线中的占位符。试试this article

            路由参数

            路由参数可用于在路由定义中插入占位符。这将有效地创建一种模式,在该模式中可以收集 URI 段并将其传递给应用程序的逻辑处理程序。

            这听起来可能有点令人困惑,但是当您看到它的实际效果时,一切都会水到渠成。来了……

            <?php
            
            // app/routes.php
            
            // routes for the books section
            Route::get('/books', function()
            {
                return 'Books index.';
            });
            
            Route::get('/books/{genre}', function($genre)
            {
                return "Books in the {$genre} category.";
            });
            

            【讨论】:

            • 这是一个简单的例子
            • 我认为问题中显示的代码和导致完整堆栈框架的组件之间的步骤不再那么简单了。
            【解决方案6】:

            还有basename()

            echo basename('http://localhost/joe'); //joe
            

            【讨论】:

              【解决方案7】:

              最好用这条规则或者mod proxy重写REQUEST_URI

              RewriteCond %{REQUEST_URI}
              

              然后您可以使用trim($_SERVER['REQUEST_URI'],'/') 轻松获取参数并删除其斜线。

              【讨论】:

                猜你喜欢
                • 2015-03-28
                • 2021-09-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多