2010-12-15 20 views
0

ねえ、そこに! 私は苦労しているという簡単な質問をしています。 私は、ユーザーがYouTubeのリンクに入れてしまうと、あなたの典型的な単一のページには、例えば、正常に動作し、入力フィールドがあります。URLの一部をPHPで置き換えます

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を取ると、ワットatch?v=11characters後に任意の文字を削除する方法はありますか?

ので、本質的には、私が原因スパム防止

これを行うための簡単な方法があるにHTTPビットを削除する必要がありました。この

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

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

に変身?これを行うには

+0

http://php.net/manual/en/function.parse-url.phpとhttp://www.php.net/manual/en/function。 parse-str.phpはこのために存在します –

答えて

0

一つの方法は、explodeを使用している:

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

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

すべてを、それが$ NEWURLになります後、 "&" は$のNEWURL [0]、およびすべてのものになります前に、[1] 。

+0

これは私の与えられた状況で一番うまくいく、私は爆笑を忘れたと思う、助けてくれてありがとう! – user543468

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

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

echo $keep; 
+0

私はstrposを使った答えを書いていましたが、私はあなたの答えがもっと好きです。 Upvote! – sjobe

+0

または$ keep = current(explode( '&'、$ url));を使用できます。 – fire

+0

詳細情報はありがとうございます! – user543468

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

私はこれを試してみましたが動作しますが、私はPHPのトータルnoobですし、コードを少し練習するのに困っていました、もっと勉強する必要があります!感謝= D – user543468

関連する問題