2008-11-07 54 views

回答

11
if (stripos($url, 'http://') !== 0) { 
    $url = 'http://' . $url; 
} 
+1

您的回答是正确的,但是当人们按照这个顺序放置比较运算符的两个操作数时我无法忍受。 – 2008-11-07 15:28:08

+0

我与卢卡斯就此合作。我的推理是,如果你把它当作英文句子读出来,这是没有意义的。 “如果零不等于这个功能的结果......” – Lasar 2008-11-07 15:42:24

+3

它显然不太可读。但是在C语言的语言中有一个基本原理,你可以不小心写'if(a = 0)'。 '如果(0 = a)'会很快被抓住。虽然我个人不使用这种风格,但这是品味和编码标准的问题。 – bobince 2008-11-07 17:04:14

7

我给你推荐了汤姆的

if (0 !== stripos($url, 'http://') && 0 !== stripos($url, 'https://')) { 
    $url = 'http://' . $url; 
} 

然而,这会搞乱使用其它协议(FTP链接略有改善:// SVN://鼠://etc)

3
if (!preg_match("/^http:\/{2}/",$url)){ 
    $url = 'http://' . $url; 
} 
2

我会检查一些字母后跟一个冒号。根据URI规范,使用冒号将“模式”(http,ftp等)从“模式特定部分”中分离出来。这样,如果有人进入(例如)mailto链接这些处理正确。

相关问题