【问题标题】:How to get id from seo friendly url using php?如何使用 php 从 seo 友好的 url 获取 id?
【发布时间】:2010-11-24 23:21:14
【问题描述】:

如何从 seo 友好的 url 中获取用户的 ID?

这是网址(1 是 id)

http://www.website.com/users/edit/1

如果 url 是 http://www.website.com/users/edit/1/stack-overflow/ 在这种情况下我如何找到 id?

我正在尝试将其设为<?php user = User::find($_GET['id']); ?>,但 id 不起作用。

【问题讨论】:

    标签: php function url seo


    【解决方案1】:
    <?php 
    $url = explode("/",($_SERVER["REQUEST_URI"])); 
    print_r($url); 
    ?>
    

    在您的情况下,$url[2] 应该具有您所追求的 ID...

    【讨论】:

    • 谁曾将此标记为-1,如果他们能解释原因会很棒,因为这将完全按照他的要求...
    • 不是我投了你的票,而是投了赞成票,因为你很正确。
    【解决方案2】:

    实现这一点的最佳方法是使用.htaccessmod_rewrite 分配$_GET 变量:

    .htaccess:

    RewriteBase /
    RewriteRule ^users/edit/(.*)/(.*)$ users/edit/?user_id=$1&somethingelse=$2 [L,NC]
    

    然后在你的 php 脚本中:

    $user_id = $_GET['user_id'];
    $somethingelse = $_GET['somethingelse'];
    

    【讨论】:

      【解决方案3】:

      嗯...我认为您应该告诉我们更多有关您正在使用的类或框架的信息...但是无论您做什么都行不通。因为 $_GET 只有在您实际上在 url 中以 ?id=123 方式传递参数时才会包含某些内容......所以这个 find 将不会搜索任何内容,因为 $_GET 是空的。

      【讨论】:

      • 是的,我知道。我想我会使用变量而不是 $_GET
      【解决方案4】:

      使用正则表达式或substrstrpos 解析超级全局$_SERVER['REQUEST_URI'],其中将包含users/edit/1/stack-overflow/ 之类的内容

      【讨论】:

        猜你喜欢
        • 2016-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        • 2018-05-22
        • 2013-01-20
        • 2013-09-20
        相关资源
        最近更新 更多