2012-11-09 224 views
-2

我正在尋找PHP代碼來查找URL末尾是否有多個斜槓(/)。例如,我要一個,如果條件具有以下結構:檢查URL末尾的斜槓數

$requesturl = $_SERVER['PATH_INFO'] 
if (<condition>) { 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: <url>"); 
} 

我要找的條件網址代碼。該條件需要在$ requesturl的末尾檢測多個尾部斜線,並且URL必須是當前頁面的URL,並且只有一個尾部斜線。

回答

0

如果URL具有在它的結束兩個或更多的斜槓:

$requesturl = $_SERVER['PATH_INFO']; 

if(preg_match('/\/{2,}$/',$requesturl) === 1){ 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: <url>"); 
} 
1

即使'//'位於網址中間,這樣做肯定會有效。希望這個Hepls。

<?php 
$url = $_SERVER['REQUEST_URI']; 
$len = strlen($url); 
$i=0; 
while($i<=$len) 
{ 
$i++; 
$url = str_replace('//','/',$url); 

} 
$url = str_replace('http:','http://',$url); 
echo "<script>window.location='".$url."'</script>"; 
?> 
+0

美麗的答案。這就是答案。 – Anwar

+0

但是在目前的形式下,它每次都會繼續重寫window.location,如果檢查window.location的東西,肯定會有一些。 – Sandeep

+0

如果你不需要重定向只是刪除window.location並使用你喜歡的網址。我這樣做,以便你可以檢查網址。 –

0
<?php 

$sample = array(
    "http://www.example.com/abc/d", 
    "http://www.example.com/abc/d/", 
    "http://www.example.com/abc/d//", 
    "http://www.example.com/abc/d///" 
); 

foreach ($sample as $url) { 
    echo trim_end_slash($url); 
} 

function trim_end_slash($url) { 
    if(preg_match("/(.*?\/)\/+$/", $url, $matches)) { 
     return $matches[1] . "\n"; 
    } else { 
     return $url . "\n"; 
    } 
} 


?> 
+0

爲什麼這麼複雜?看看Bikash的答案。這很簡單,並且可以使用 – Anwar

+0

沒關係,使用你喜歡的。 :) – sleetdrop