2017-10-15 68 views
1

我试图验证Twitter的URL这我的用户将提交。检测Twitter的网址PHP

这是我有:

$twitter = "http://twitter.com/jack"; 
$parse = parse_url($twitter); 
if($parse['host'] !== 'www.twitter.com') { 
    $error[] = "Invalid Twitter URL."; 
} 

这似乎并不做这项工作。我真的不希望使用正则表达式作为parse_url似乎对这种验证的作出。

任何人都知道这是怎么回事错在这里?

+1

'的print_r($解析)'是你的朋友。检查你从哪个 – ThiefMaster

+0

'Array([scheme] => http [host] => twitter.com [path] =>/jack)' – Mitch

+0

回答你的问题。 – ThiefMaster

回答

1

您正在检查www.twitter.com,但网址中的主机只是twitter.com,因此请检查此问题。

+0

PHP,你为什么总是要来烦我最小的事情。谢谢小偷。 – Mitch

+0

TBH,这个问题到底是不是真的与PHP相关;) – ThiefMaster

1

如果你把$解析成的var_dump()函数,你得到的结果是:

array(3) { 
    ["scheme"]=> 
    string(4) "http" 
    ["host"]=> 
    string(11) "twitter.com" 
    ["path"]=> 
    string(5) "/jack" 
} 

所以主机不 “www.twitter.com”,而是 “twitter.com”。

1

你可以这样做(我没有测试这个这么告诉我,如果它的工作):

$twitter = "http://twitter.com/jack"; 
$link = str_replace("www.","",$twitter); 
$link = str_replace("https://","",$link); 
$link = str_replace("http://","",$link); 
$host = explode(".",$link); 
echo $host[0]; //Will give you "twitter" 

希望它能帮助:d