2010-12-15 117 views
0

嘿! 我有一個簡單的問題,我正在努力,希望你們可以看看。 我有一個輸入框,用戶將上載到YouTube鏈接和典型的單頁正常工作,例如:用php替換部分url

youtube.com/watch?v=c3sBBRxDAqk 

watch?v=11characters工作正常

但如果用戶輸入除上述例子以外的任何,如:

youtube.com/watch?v=tC0E1id4raw&feature=topvideos 
//or 
youtube.com/watch?v=smETLCCPTVo&feature=aso 

是有辦法採取上述的URL 2和W atch?v=11characters後除去任何字符?

所以在本質上,把這個

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos" 

youtube.com/watch?v=tC0E1id4raw removing & and onwards 

我不得不刪除HTTP位,由於垃圾郵件防禦

有一個簡單的方法來做到這一點?要做到這一點

+0

http://php.net/manual/en/function.parse-url.php和http://www.php.net/manual/en/function。對此存在parse-str.php – 2010-12-15 14:59:47

回答

0

一種方法是使用explode

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos"; 

$newurl = explode("&", $url); 

之前的所有 「&」 將在$ NEWURL [0],和一切後,它會在$ NEWURL [1] 。

+0

這在我給出的情況下效果最好,我想我忘了爆炸哈哈,感謝您的幫助! – user543468 2010-12-15 15:35:15

4
$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos"; 

list($keep, $chuck) = explode('&', $url); 

echo $keep; 
+0

我正在寫一個使用strpos的答案,但我更喜歡你的答案。給予好評! – sjobe 2010-12-15 14:55:03

+0

或者你可以使用$ keep = current(explode('&',$ url)); – fire 2010-12-15 14:56:26

+0

非常感謝您的詳細信息! – user543468 2010-12-15 15:34:28

0

無需正則表達式:

$parts = parse_url($url); 
$params = array(); 
parse_str($parts['query'], $params); 

如果您已經安裝PECL pecl_http:

$url = http_build_url($url, 
         array('query' => 'v='. $params['v']), 
         HTTP_URL_REPLACE | HTTP_URL_STRIP_FRAGMENT); 

或者不pecl_http:

$url = $parts['scheme'] . $parts['host'] . $parts['path'] . '?v=' . $params['v']; 

這是對秩序的變化更穩健的查詢參數。

參考:parse_urlparse_strhttp_build_url

+0

我做了測試,它的工作原理,但我是一個總的noob在PHP中,我有麻煩跟隨代碼了一下,我需要學習更多!謝謝= D – user543468 2010-12-15 15:36:35