2

現在、URL から YouTube ビデオ ID を取得しようとしています。getYoutubeVideoIDを取り除い$urlて見つける関数を作成しました$sVideoID。問題は、変数をエコーすると、$sVideoID の空の値が返されることです。$sVideoID動画 ID を割り当てているのに、値の結果が得られないのはなぜですか?

<?php

if($_POST)
{

$url     = $_POST['yurl'];

function getYoutubeVideoID($url) {
    $sVideoID = preg_replace('~https?://(?:[0-9A-Z-]+\.)?(?:youtu\.be/| youtube\.com\S*[^\w\-\s])([\w\-]{11})      
        (?=[^\w\-]|$)(?![?=&+%\w]*(?:[\'"][^<>]*>| </a>))[?=&+%\w-]*~ix','<a href="http://www.youtube.com/watch?v=$1">YouTube link: $1</a>',$url);
    return $sVideoID;
}

    $hth        = 300; //$_POST['yheight'];
    $wdth       = 500; //$_POST['ywidth'];


?>

<?
//Iframe code

echo htmlentities ('<iframe src="http://www.youtube.com/embed/'.$sVideoID.'" frameborder="0" width="'.$wdth.'" height="'.$hth.'"></iframe>');

?>

<?
//Old way to embed code
echo htmlentities ('<embed src="http://www.youtube.com/v/'.$sVideoID.'" width="'.$wdth.'" height="'.$hth.'" type="application/x-shockwave-flash"  wmode="transparent" embed="" /></embed>');
}
?>
4

2 に答える 2

2
于 2012-07-11T21:25:58.793 に答える
2

おそらく私が間違っているか、関連するすべてのデータが含まれていない可能性がありますが、作成した関数を実行するコードのどこにも表示されません。

現在行っていることの代わりに、次のことを試してください。

echo htmlentities ('<iframe src="http://www.youtube.com/embed/'.getYoutubeVideoID($url).'" frameborder="0" width="'.$wdth.'" height="'.$hth.'"></iframe>');

単純に関数を定義することはできず、実行されて変数が割り当てられます。関数が実行されると、その場所に変数が返されます。return value例として、関数の$var を割り当てることができます。

$var = getYoutubeVideoID($url);

上記の代わりに、これを試すこともできます:

$sVideoID = getYoutubeVideoID($url);

最後に、他の人が指摘したように正規表現を使用する代わりに、parse_url()と組み合わせて使用​​してparse_str()、URL からデータを取得できます。

$arr = parse_url($url);
parse_str($arr['query'], $output);
echo $output['v'];
于 2012-07-11T21:30:06.750 に答える