基本上,我使用gethostbyname()
来获取指定URL的IP地址,使用parse_url()
来确定特定的域。然而,这并不工作,如果http://
不在URL(除非我失去了一个选项)如何检查'http://'是否在变量中,如果不是,请添加它?
所以,我怎么能检查是否http://
是在URL,如果没有,适当增加吗?
或者如果有更好的选择,我想听听它。谢谢。
基本上,我使用gethostbyname()
来获取指定URL的IP地址,使用parse_url()
来确定特定的域。然而,这并不工作,如果http://
不在URL(除非我失去了一个选项)如何检查'http://'是否在变量中,如果不是,请添加它?
所以,我怎么能检查是否http://
是在URL,如果没有,适当增加吗?
或者如果有更好的选择,我想听听它。谢谢。
<?php
$url = [some url here];
if(substr($url, 0, 7) != 'http://') {
$url = 'http://' . $url;
}
?>
工作就像一个魅力,谢谢。 – Rob 2010-06-20 23:33:26
if (strpos("http://", $url) === "true"){ action };
此比较不起作用。 strpos在成功时返回一个整数,如果找不到字符串则返回boolean“false”。它永远不会返回布尔值“true”,当然不会返回字符串“true”。 if(strpos(“http://”,$ url)!== false)'会测试它是否在整个字符串中找到,或者查看它是否在字符串的开头,if(strpos(“ http://“,$ url)=== 0)' – JAL 2010-06-20 23:57:28
嗯,严格来说,你需要考虑HTTPS,以及,甚至ftp和邮寄地址根据你在做什么。 你可能首先要检查一个':',没有一个你肯定没有协议,可以跳过其余的协议,你可能有一个协议,或者一个端口规范。
<?php
$url = [some url here];
if(substr($url, 0, 7) != 'http://') {
if(substr($url, 0, 8) != 'https://') {
$url = 'http://' . $url;
}
}
?>
等
简单的解决方案:
if(!preg_match('/http[s]?:\/\//', $url, $matches)) $url = 'http://'.$url;
的杜佩http://stackoverflow.com/questions/2762061/how-to-add-http-if-its-not-exists -in-the-url? – 2010-06-20 23:56:02