0

私が理解していることから、youtube.comはビデオリンクに3種類のURLを使用しています。

http://www.youtube.com/watch?v=8uLPtmCroQ8&feature=related
http://www.youtube.com/watch?v=8uLPtmCroQ8
http://youtu.be/8uLPtmCroQ8

このURLをこれらのさまざまな方法のいずれかで自分のサイトに送信し、URLをと呼ばれるカスタムフィールドに保存します$video_code。ビデオのIDの後にあるパラメータをすべて削除する必要があるため、ユーザーが上記の最初のURLを送信すると、&feature=related削除されます。私はphpを使用しています。

4

5 に答える 5

2

あなたの問題を正しく理解していれば、このようなものを使用してビデオIDをデータベースに保存し、好きなようにURLを作成できます。

function getVideoId($url)
{
    $parsedUrl = parse_url($url);
    if ($parsedUrl === false)
        return false;

    if (!empty($parsedUrl['query']))
    {
        $query = array();
        parse_str($parsedUrl['query'], $query);
        if (!empty($query['v']))
            return $query['v'];
    }

    if (in_array(strtolower($parsedUrl['host']), array('youtu.be', 'www.youtu.be')))
        return trim($parsedUrl['path'], '/');

    return false;
}

$input = array('http://www.youtube.com/watch?v=8uLPtmCroQ8&feature=related', 'http://www.youtube.com/watch?v=8uLPtmCroQ8', 'http://youtu.be/8uLPtmCroQ8');

foreach ($input as $url)
{
    echo getVideoId($url) . PHP_EOL;
}
于 2012-05-01T20:42:04.527 に答える
0

どの言語でこれをしたいですか? PHP の場合は、これを参照してください。

于 2012-05-01T19:49:27.657 に答える
0

次のコードを使用します。

$arr=array(
'http://www.youtube.com/watch?v=8uLPtmCroQ8&feature=related',
'http://www.youtube.com/watch?v=8uLPtmCroQ8',
'http://youtu.be/8uLPtmCroQ8',
);
for($i=0; $i<count($arr); $i++){
   $urlarr = parse_url($arr[$i]);
   if (!empty($urlarr['query'])) {
      parse_str($urlarr['query']);
      $qarr = array();
      if (!empty($v))
         $qarr['v'] = $v;
      $urlarr['query'] = http_build_query($qarr);
      $arr[$i] = http_build_url('', $urlarr);
   }
}
print_r($arr);

出力:

Array
(
    [0] => http://www.youtube.com/watch?v=8uLPtmCroQ8
    [1] => http://www.youtube.com/watch?v=8uLPtmCroQ8
    [2] => http://youtu.be/8uLPtmCroQ8
)
于 2012-05-01T20:46:52.943 に答える
0
function getVideoCode($url){
$videoCode;
$code_parse = parse_url($url);
if(empty($code_parse["query"])){
    $videoCode = str_replace("/"," ",$code_parse["path"]);
}else{
    $videoCode = clearQuery($code_parse["query"]);
}
echo $videoCode;
}
function clearQuery($query){
$redundant = array("v", "&", "feature","=","related"); 
return str_replace($redundant," ",$query);
}

専門的なコードではありませんが、理解しやすいです。このように呼び出すと:

getVideoCode("http://youtu.be/8uLPtmCroQ8");
getVideoCode("http://www.youtube.com/watch?v=8uLPtmCroQ8");
getVideoCode("http://www.youtube.com/watch?v=8uLPtmCroQ8&feature=related");

出力は

  • 8uLPtmCroQ8
  • 8uLPtmCroQ8
  • 8uLPtmCroQ8
于 2012-05-02T20:35:42.620 に答える
0

正規表現を使用して文字列を分割することもできます。こちらをご覧ください: http://www.php.net/manual/en/function.preg-split.php

于 2012-05-01T19:58:11.880 に答える