2010-12-15 118 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