2014-03-04 24 views
0

我寫了一個Switch語句,在我想要更改默認標題的頁面上爲自己的網站添加自定義標題。在PHP中過濾URL Switch語句

它可以工作,但如果訪問者轉到例如:google.com/cars?page=2或google.com/cars?sort=asc頁面標題設置爲默認值。

如何調整下面的代碼,以便在URL中的問號後面顯示頁面上的自定義頁面標題?

<?php 
$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
switch ($host) 
{ 

case "google.com": 
echo 'Google'; 
break; 

case "google.com/cars": 
echo 'Cars - Google'; 
break; 

case "google.com/bicyles": 
echo 'Bicycles - Google'; 
break; 

case "google.com/trains": 
echo 'Trains - Google'; 
break; 

default: 
echo $title; 
} 

?>

+0

parse_url和使用路徑 – Ultimater

回答

0

使用parse_url(http://us3.php.net/parse_url)。

$uri = parse_url($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']); 
$host = $uri['host'] . $uri['path']; 

請注意,我沒有嘗試這樣做......你可能需要獲取方案(即「HTTP://」),以及這個工作。

+0

parse_url需要鏈接有「HTTP://」,在它的前面,即使你不使用的方案。 – Ultimater

+0

你確定嗎?該手冊說: 對嚴重畸形的URL,parse_url()可能會返回FALSE。 然而,接着說: 實施例#2甲parse_url()例如具有缺失方案 就像我說的...沒有嘗試過,所以你可能是對的。 – mcmurphy

+0

嗯......似乎取決於PHP版本:5.4.7 \t當方案被省略並且存在主要組件分隔符時固定主機識別。 – Ultimater

0
switch (true) 
{ 

    case (preg_match('/google.com$/',$host)): 
     echo 'Google'; 
     break; 

    case (preg_match('/google.com\/cars/',$host)): 
     echo 'Cars - Google'; 
     break; 

    case (preg_match('/google.com\/bicvcles/',$host)): 
     echo 'Bicycles - Google'; 
     break; 

    case (preg_match('/google.com\/trains/',$host)): 
     echo 'Trains - Google'; 
     break; 

    default: 
     echo "test"; 
} 
+0

謝謝,這對我很有用。唯一的是,如果我在網址中有一個破折號( - ),它仍然不起作用。有沒有人爲此提供解決方案? –