获取URL中的子目录文件夹并回显它。

时间:2013-11-21 22:41:00

标签: php

如何获取URL的值,例如。 www.example.php/folders/crowd?我试图用PHP回应人群。我曾尝试使用$_SERVER ['SCRIPTNAME'],但我真的无法让它发挥作用。

3 个答案:

答案 0 :(得分:2)

要获取文件的当前目录(在“www.example.php / folders / crowd”示例中只是“人群”),请使用:

$cur_dir = basename(dirname($_SERVER[PHP_SELF]))

如果你只是想要这个文件,那就试试这个:

$cur_file = $_SERVER[PHP_SELF];

答案 1 :(得分:1)

你可以使用parse_url,因为scriptname将返回真正的php文件执行“index.php”。例如。

php > var_dump(parse_url('http://www.example.php/folders/crowd', PHP_URL_PATH));
// "/folders/crowd"

但如果你只想要最后一部分,你可以:

$tmp = explode('/', 'www.example.php/folders/crowd');
var_dump(end($tmp));
// "crowd"

或另一种方式:

var_dump(basename(parse_url('http://www.example.php/folders/crowd', PHP_URL_PATH)));
// "crowd"

答案 2 :(得分:0)

也许你想看一下Apache模块 mod_rewrite 。许多网络托管服务提供商提供此模块如果您甚至操作自己拥有的专用服务器,则安装/启用此模块没有问题。

mod_rewrite 可用于透明地将请求URL“转换”为对已定义的php脚本的请求,其中查询字符串参数是从原始请求派生的。这通常用于搜索引擎优化的网址,如http://mywebpage/article/how-to-cook-pizza-123.html。在这种情况下,可以调用脚本,仅将URL中的123作为参数(例如http://mywebpage/article/how-to-cook-pizza-123.html => /article.php?id=123)。

在您的情况下,您可以使用这样的配置(将其放入.htaccess file或您的Apache / vhost配置中):

RewriteEngine on
RewriteRule ^folders/[A-Za-z]+$ showfolder.php?user=$1 [L]

您的showfolder.php可能如下所示:

<?php
    if (isset($_GET['user'])) {
        echo htmlentities($_GET['user']);
    } else {
        echo "No parameter found.";
    }
?>

folders/之后包含字母(A-Z和a-z)的任何单词都将被视为php脚本的user参数。然后,您可以轻松地echo此值,从数据库或其他任何内容中获取它。例如,对/folders/crowd的请求将导致您的脚本使用此参数执行:showfolder.php?user=crowd。您网站的用户将看不到任何隐藏的内部转发。

如果您使用其他一些网络服务器软件(nginx,...):还有similar modules for other web server products