他のサイトで見つけたすべてのビデオについて youtube にアクセスしないようにしていますが、それは youtube からのものです。ビデオの URL を右クリックしてコピーすると、URL のリンク内にこの機能が含まれます。str_replace でそれを取り除こうとしています。
リンクhttp://www.youtube.com/watch?feature=player_embedded&v=wq7ftOZBy0E
$_GET['link'] = str_replace('feature=player_embedded&', '', $_GET['link']);
また
$_GET['link'] = str_replace('http://www.youtube.com/watch?feature=player_embedded&', 'http://www.youtube.com/watch?', $_GET['link']);
どちらもhttp://www.youtube.com/watch?feature=player_embedded
、私が期待しているものではなく、のみを返します:http://www.youtube.com/watch?v=wq7ftOZBy0E
アップデート:
最初に考えたように、これは str_replace の問題ではないことに気付きました。
http://localhost/mysite/link.php/?link=http://www.youtube.com/watch?feature=player_embedded&v=wq7ftOZBy0E
$_GET['link'] は "&" まで URL を使用します。このすべてが欠けています&v=wq7ftOZBy0E
。
アンパサンドが $_GET['link'] を壊したようです。これを機能させるにはどうすればよいですか?
受け入れられた回答に基づく解決策:
if(isset($_GET['v']))
{
$_GET['link'] = $_GET['link'].'&v='.$_GET['v'];
$_GET['link'] = str_replace('feature=player_embedded&', '', $_GET['link']);
$_GET['link'] = str_replace('http://www.youtube.com/watch?v=', '//www.youtube.com/embed/', $_GET['link']);
$_GET['link'] = str_replace('www.youtube.com/watch?v=', '//www.youtube.com/embed/', $_GET['link']);
$_GET['link'] = str_replace('http://youtu.be/', '//www.youtube.com/embed/', $_GET['link']);
echo $_GET['link'];
}
else
{
$_GET['link'] = str_replace('http://www.youtube.com/watch?v=', '//www.youtube.com/embed/', $_GET['link']);
$_GET['link'] = str_replace('www.youtube.com/watch?v=', '//www.youtube.com/embed/', $_GET['link']);
$_GET['link'] = str_replace('http://youtu.be/', '//www.youtube.com/embed/', $_GET['link']);
echo $_GET['link'];
}