php从$ _SERVER替换字符串['REQUEST_URI']

时间:2016-11-28 05:31:48

标签: php

我想从URI替换文件名。我需要在网页上更换网址。 例: 页面网址:

https://www.domain.com/...../india-hotels/dun-hotels/abc.php

我的代码

 echo $uri=$_SERVER['REQUEST_URI'];

返回

...../india-hotels/dun-hotels/abc.php

但我不需要“abc.php”。我需要这样的

...../india-hotels/dun-hotels/

这应该使用php完成,因为我会在我的网页上使用它。 请建议我解决这个问题。

3 个答案:

答案 0 :(得分:1)

您可以使用简单,有规律的explode& implode获取您想要的内容,如下面的代码段所示。 Quick-Test Here

    <?php

        // ASSUMING THAT $_SERVER['REQUEST_URI']; RETURNS THE STRING BELOW:
        $uri    =  /*$_SERVER['REQUEST_URI'];*/ "...../india-hotels/dun-hotels/abc.php";
        $parts  = explode("/", $uri);
        array_pop($parts);
        $uri    = implode("/" , $parts) . "/";
        echo $uri;    //<== YIELDS::: ...../india-hotels/dun-hotels/

或者,甚至最好,您可以将basename()函数与str_replace()结合使用,以实现相同的目标:

    <?php

        // ASSUMING THAT $_SERVER['REQUEST_URI']; RETURNS THE STRING BELOW:
        $uri        =  /*$_SERVER['REQUEST_URI'];*/ "...../india-hotels/dun-hotels/abc.php";
        $baseName   =  basename($uri);
        $uri        = str_replace($baseName, "", $uri);
        echo $uri;   //<== YIELDS::: ...../india-hotels/dun-hotels/

以浓缩形式:

    <?php

        $uri        =  /*$_SERVER['REQUEST_URI'];*/ "...../india-hotels/dun-hotels/abc.php";;
        $uri        = str_replace(basename($uri), "", $uri);
        echo $uri;   //<== YIELDS::: ...../india-hotels/dun-hotels/

答案 1 :(得分:0)

在apache中启用重写模块。

将此内容写入 .htaccess 文件

RewriteCond %{THE_REQUEST} /index\.php [NC]

RewriteRule ^(.*?)index\.php$ /$1 [L,R=301,NC,NE]

答案 2 :(得分:0)

我解决了这个问题

$uri_ar=array();
$uri=($_SERVER['REQUEST_URI']);

if(strpos($uri,'.php')){    
  $uri_ar=explode('/',$uri);

  array_pop($uri_ar);
  $uri=implode('/',$uri_ar);

}