2011-05-24 49 views
0

我有你輸入一個URL一個輸入,我基本上想寫一些PHP,說如果域名containts的「http://」,然後保持它,否則,如果沒有,然後將其添加到開始。 這是我迄今爲止...如果HTTP://爲字符串,然後離開它,否則,如果不加它

$domain = $_POST["domain"]; 

if (strpos($domain, "http://")) { 
return $domain; 
} else { 
$domain = "http://" . $domain; 
} 

這似乎沒有工作..

它不添加HTTP://如果上它不包含HTTP://。

+0

爲什麼一個返回'$ domain',以及其他改變它的價值? – 2011-05-24 14:28:50

回答

4

的「http://」,然後離開它是,否則,如果不把它添加到開始。

如何將其添加不管?我覺得這是比較容易:

<?php 
$url = 'http://www.google.com'; 
echo 'http://' . preg_replace('~^http://~', '', $url); 
+0

很好的解決方案:) – fsonmezay 2011-05-24 14:28:57

+0

或許請解釋一下? – Michelle 2012-08-05 11:43:51

2

manual

這個函數可以返回布爾 FALSE,但也可以返回 非布爾值,其結果爲 FALSE,如0或「」。有關更多 的信息,請參閱 關於布爾值的部分。 使用===操作爲 測試此 函數的返回值。

5

由於字符串http://開始,strpos將返回0,這將評估爲false。

更改if語句:那是因爲strpos將返回字符串的位置,在字符串中

if(strpos($domain, "http://") !== FALSE){ 
2

。 在你的url中,這是0.這等於false。做一個嚴格的檢查 - 添加===錯誤。

6

你忘記返回$域。

$domain = $_POST["domain"]; 

if (strpos($domain, "http://") !== false) { 
return $domain; 
} else { 
return "http://" . $domain; 
} 
0

使用strpos()時要小心。當在字符串的開始處找到'http://'時,它將返回0,導致if語句意外失敗。您將要檢查返回的類型,以確保:

$domain = $_POST["domain"]; 

if (FALSE !== strpos($domain, "http://")) { 
    return $domain; 
} else { 
    return "http://" . $domain; 
} 
+1

嗨,strpos將返回第一個匹配項的位置,如果它不在那裏,則返回false。這意味着它將*永遠不會*返回布爾真實。 – 2011-05-24 14:29:49

+0

'strpos' **從不**返回'TRUE'。如果未找到,它將返回字符串的位置或「FALSE」。 – 2011-05-24 14:29:57

+0

謝謝你的收穫。糾正。 – 2011-05-24 14:43:00

1
if (strpos($domain, "http://") !== false) { 
//return substr($domain,7); Thanks Rocket. 
return $domain; 
} else { 
return "http://" . $domain; 
} 
+2

'!= false'應該是'!== false'。如果字符串以'http://'開頭,'strpos'將返回'0',其值爲'false'。 – 2011-05-24 14:32:12

+0

thnx!只是錯過了它。 – fsonmezay 2011-05-24 14:48:06

+0

'substr'調用有什麼用? – 2011-05-24 14:49:31

1

我知道這是一個有點遲到了,但我更喜歡這種方法:

if (!preg_match('#^http[s]{0,1}://#', $input)) { 
    $input = 'http://' . $input; 
} 

這將保留一個https://開頭的地址,而不是以http://https://www.mysite.com結尾。如果您有一條不使用https地址的規則,您還可以進一步對其進行編輯以去除https://。

我知道原來的問題沒有問這個,但我認爲在大多數情況下,要考慮它的重要,並希望能幫助別人誰來尋找。

相關問題