2010-06-20 71 views
3

基本上,我使用gethostbyname()来获取指定URL的IP地址,使用parse_url()来确定特定的域。然而,这并不工作,如果http://不在URL(除非我失去了一个选项)如何检查'http://'是否在变量中,如果不是,请添加它?

所以,我怎么能检查是否http://是在URL,如果没有,适当增加吗?

或者如果有更好的选择,我想听听它。谢谢。

+1

的杜佩http://stackoverflow.com/questions/2762061/how-to-add-http-if-its-not-exists -in-the-url? – 2010-06-20 23:56:02

回答

7
<?php 
    $url = [some url here]; 
    if(substr($url, 0, 7) != 'http://') { 
    $url = 'http://' . $url; 
    } 

?> 
+0

工作就像一个魅力,谢谢。 – Rob 2010-06-20 23:33:26

-4

if (strpos("http://", $url) === "true"){ action };

+1

此比较不起作用。 strpos在成功时返回一个整数,如果找不到字符串则返回boolean“false”。它永远不会返回布尔值“true”,当然不会返回字符串“true”。 if(strpos(“http://”,$ url)!== false)'会测试它是否在整个字符串中找到,或者查看它是否在字符串的开头,if(strpos(“ http://“,$ url)=== 0)' – JAL 2010-06-20 23:57:28

1

嗯,严格来说,你需要考虑HTTPS,以及,甚至ftp和邮寄地址根据你在做什么。 你可能首先要检查一个':',没有一个你肯定没有协议,可以跳过其余的协议,你可能有一个协议,或者一个端口规范。

<?php 
    $url = [some url here]; 
    if(substr($url, 0, 7) != 'http://') { 
     if(substr($url, 0, 8) != 'https://') { 
     $url = 'http://' . $url; 
     } 
    } 

?> 

1

简单的解决方案:

if(!preg_match('/http[s]?:\/\//', $url, $matches)) $url = 'http://'.$url; 
相关问题