2011-06-03 73 views
1

聲明我試圖根據我的網站的根網址顯示一個div標記,即如果該網址是dev.foo.com顯示div如果其他www.foo.com不顯示等。我想出了這如果基於url

<?php if (substr($_SERVER['REQUEST_URI'], 0, 5) !== 'dev.') { 
    echo '<div class="dev-site-stuff">THIS IS THE DEV SITE!!</div>'; 
} 
?> 

但它不工作,我不能看到一個理由 - 任何想法非常感謝!

+0

什麼是'(!==)?它等於('==')或不等於('!=') – 2011-06-03 22:33:08

+3

@AR:'!=='是'==='的倒數。在PHP(和其他幾種語言)中,三元等於比較類型和值。 – 2011-06-03 22:34:54

+3

AR,你錯了。根據經驗,我發現在告訴某人他們不知道他們在做什麼之前最好進行檢查。 – tomfumb 2011-06-03 22:35:23

回答

1
$url = explode('.', $_SERVER['HTTP_HOST'], 2); 

/* you might want pretty variable that exactly gets the subdomain. 
* $subdomain = $url[0] != "www" ? $url[0] : ""; 
* if($subdomain == "dev") { 
* // dev site... 
* }else if($subdomain == "") { 
* // www site... 
* } 
*/ 

if($url[0] == "dev") { 
    echo '<div class="dev-site-stuff">THIS IS THE DEV SITE!!</div>'; 
} 

substr,strpos等在這種情況下並不總是有效。這真好?

編輯:順便讀一下你的問題。

6

你應該使用$_SERVER['SERVER_NAME']

如果您有任何其他疑惑只是做一個print_r($_SERVER);實際看到的陣列是如何由

+4

有關每個密鑰的更多詳細信息,請查看文檔(http://php.net/manual/en/reserved.variables.server.php) – 2011-06-03 22:33:13

+0

這裏假設dev和live站點在不同的服務器上 – tomfumb 2011-06-03 23:20:08

+0

@user:從來沒有聽說過虛擬主機? – dynamic 2011-06-03 23:21:59

1

除了@職場英語對話回答你上面也比較長5的子串對一個長度爲4的字符串,所以它永遠不會是真的。

您CON使用strrpos這樣

if (strrpos($_SERVER['SERVER_NAME'], 'dev.') > 0) { 

希望這有助於。