2009-09-01 11 views

答えて

3

私はparse_urlparse_strの組み合わせを使用します。

$url = 'http://www.youtube.com/watch?v=dgNgODPIO0w&feature=rec-HM-fresh+div'; 
$parts = parse_url($url); 
parse_str($parts['query'], $params); 
$url = 'http://www.youtube.com/v/'.$params['v']; 

または単純な正規表現:あなたがあなたの代わりに別の文字を使用することができることを知って

preg_match('/^'.preg_quote('http://www.youtube.com/watch?', '/').'(?:[^&]*&)*?v=([^&]+)/', $url, $match); 
$url = 'http://www.youtube.com/v/'.$match[1]; 
+0

/正規表現のデリミタとして、右か?あなたの文字列の最初の文字が何であっても区切り文字として扱われるので、/の代わりに#や@や〜などを使うことができます(URL自体にバックスラッシュをエスケープしないようにする)。 – Amber

+0

@Dav:はい私はそれを知っています。しかし、あなたは '.'はメタキャラクターで任意の文字を表していることを知っていますか? – Gumbo

1
$url = 'http://www.youtube.com/watch?v=dgNgODPIO0w&feature=rec-HM-fresh+div'; 
$url = preg_replace('@http://www.youtube.com/watch\?v=([^&;]+).*[email protected]', 'http://www.youtube.com/v/$1', $url); 
0
$url = 'http://www.youtube.com/watch?v=dgNgODPIO0w&feature=rec-HM-fresh+div'; 

preg_match('~(http://www\.youtube\.com/watch\?v=.+?)&.*?~i', $url, $matches); 

echo $matches[1]; 
関連する問題