2016-11-28 63 views
1

字符串我想从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

你最后的3个网址是相同的 – matiaslauriti

+0

这也可以通过.htaccess完成。 –

回答

0

启用阿帕奇重写模块。

写在你的的.htaccess文件

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

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

我解决它像这样

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

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

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

} 
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/