2012-08-29 84 views
0

我用下面的代碼只是爲了任何URL來開始轉換與http://https:// 不過這個功能使得問題,確切類型的網址爲例parse_url YouTube的鏈接

$url = 'www.youtube.com/watch?v=_ss'; // url without http:// 

function convertUrl ($url){ 
$parts = parse_url($url); 
$returl = ""; 
if (empty($parts['scheme'])){ 
$returl = "http://".$parts['path']; 
} else if ($parts['scheme'] == 'https'){ 
$returl = "https://".$parts['host'].$parts['path']; 
} else { 
$returl = $url; 
} 
return $returl; 
} 

$url = convertUrl($url); 
echo $url; 

輸出

http://www.youtube.com/watch 

預期的輸出,因爲我想

http://www.youtube.com/watch?v=_ss 

因爲我主要用它來修復任何網址而沒有http://所以有什麼方法可以編輯這個功能,所以它可以通過=_的所有網址,如示例中所示!因爲這就是URL的查詢部分

$query = $parts['query']; 

:因爲它真的很討厭我了〜謝謝

+2

的'GET' PARAMS都在裏面'$部件[ '查詢']' – hjpotter92

回答

5

你會想。

您可以通過修改函數來做到這一點:

function convertUrl ($url){ 
    $parts = parse_url($url); 
    $returl = ""; 
    if (empty($parts['scheme'])){ 
     $returl = "http://".$parts['path']; 
    } else if ($parts['scheme'] == 'https'){ 
     $returl = "https://".$parts['host'].$parts['path']; 
    } else { 
     $returl = $url; 
    } 
    // Define variable $query as empty string. 
    $query = ''; 
    if ($parts['query']) { 
     // If the query section of the URL exists, concatenate it to the URL. 
     $query = '?' . $parts['query']; 
    } 
    return $returl . $query; 
} 
+0

完美的作品。 〜非常感謝 –

2

如果你真正關心的是通過URL的第一部分,怎麼樣一種替代方法?

$pattern = '#^http[s]?://#i'; 
if(preg_match($pattern, $url) == 1) { // this url has proper scheme 
    return $url; 
} else { 
    return 'http://' . $url; 
} 
+0

好吧,這真棒,聰明,會比parse_url更好地使用它。 –

2

http://codepad.org/bJ7pY8bg

<?php 
$url1 = 'www.youtube.com/watch?v=_ss'; 
$url2 = 'http://www.youtube.com/watch?v=_ss'; 
$url3 = 'https://www.youtube.com/watch?v=_ss'; 
function urlfix($url) { 
return preg_replace('/^.*www\./',"https://www.",$url); 
} 
echo urlfix($url1)."\n"; 
echo urlfix($url2),"\n"; 
echo urlfix($url3),"\n"; 

輸出:

https://www.youtube.com/watch?v=_ss 
https://www.youtube.com/watch?v=_ss 
https://www.youtube.com/watch?v=_ss