youtube视频由关键字嵌入

时间:2016-04-05 16:20:59

标签: php youtube-api

我正在寻找使用youtube api嵌入随机相关视频,我发现以下代码但我需要将表单代码更改为关键字变量(我将使用产品标题作为变量)此代码使用而是表单输入。如何更改代码以使用已定义的变量?

<!DOCTYPE html 
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Searching for videos by keyword</title>
    <style>
    img {
      padding: 2px; 
      margin-bottom: 15px;
      border: solid 1px silver; 
    }
    td {
      vertical-align: top;
    }
    td.line {
      border-bottom: solid 1px black;  
    }
    </style>
  </head>
  <body>
    <?php
    // if form not submitted
    // display search box
    if (!isset($_POST['submit'])) {
    ?>
    <h1>Keyword search</h1>  
    <form method="post" action="<?php echo 
      htmlentities($_SERVER['PHP_SELF']); ?>">
      Keywords: <br/>
      <input type="text" name="q" />
      <p/>
      Items to display: <br/>
      <select name="i">
        <option value="10">10</option>
        <option value="25">25</option>
        <option value="50">50</option>
        <option value="100">100</option>
      </select>
      <p/>
      <input type="submit" name="submit" value="Search"/>  
    </form>
    <?php      
    // if form submitted
    } else {
      // check for search keywords
      // trim whitespace
      // separate multiple keywords with /
      if (!isset($_POST['q']) || empty($_POST['q'])) {
        die ('ERROR: Please enter one or more search keywords');
      } else {
        $q = $_POST['q'];
        $q = ereg_replace('[[:space:]]+', '/', trim($q));
      }

      // set max results
      if (!isset($_POST['i']) || empty($_POST['i'])) {
        $i = 25;
      } else {
        $i = $_POST['i'];
      }

      // generate feed URL
      $feedURL = "http://gdata.youtube.com/feeds/api/videos/-/{$q}
      ?orderby=viewCount&max-results={$i}";

      // read feed into SimpleXML object
      $sxml = simplexml_load_file($feedURL);

      // get summary counts from opensearch: namespace
      $counts = $sxml->children('http://a9.com/-/spec/opensearchrss/1.0/');
      $total = $counts->totalResults; 
      $startOffset = $counts->startIndex; 
      $endOffset = ($startOffset-1) + $counts->itemsPerPage;       
      ?>

      <h1>Search results</h1>
      <?php echo $total; ?> items found. Showing items 
      <?php echo $startOffset; ?> to <?php echo $endOffset; ?>:
      <p/>

      <table>
      <?php    
      // iterate over entries in resultset
      // print each entry's details
      foreach ($sxml->entry as $entry) {
        // get nodes in media: namespace for media information
        $media = $entry->children('http://search.yahoo.com/mrss/');

        // get video player URL
        $attrs = $media->group->player->attributes();
        $watch = $attrs['url']; 

        // get video thumbnail
        $attrs = $media->group->thumbnail[0]->attributes();
        $thumbnail = $attrs['url']; 

        // get <yt:duration> node for video length
        $yt = $media->children('http://gdata.youtube.com/schemas/2007');
        $attrs = $yt->duration->attributes();
        $length = $attrs['seconds']; 

        // get <gd:rating> node for video ratings
        $gd = $entry->children('http://schemas.google.com/g/2005'); 
        if ($gd->rating) {
          $attrs = $gd->rating->attributes();
          $rating = $attrs['average']; 
        } else {
          $rating = 0; 
        }

        // print record
        echo "<tr><td colspan=\"2\" class=\"line\"></td>
        </tr>\n";
        echo "<tr>\n";
        echo "<td><a href=\"{$watch}\"><img src=\"$thumbnail\"/></a></td>\n";
        echo "<td><a href=\"{$watch}\">
        {$media->group->title}</a><br/>\n";
        echo sprintf("%0.2f", $length/60) . " min. | {$rating} user 
        rating<br/>\n";
        echo $media->group->description . "</td>\n";
        echo "</tr>\n";
      }
    }
    ?>
    </table>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

只需设置一个包含关键字的变量,例如$array=['cat',mouse'dog']。您还可以设置一个变量,它将在您的数据库中获取数据/预设关键字,在每个循环中传递它,然后插入您的嵌入代码。

以下是嵌入Youtube视频的指南。

// mysql/data of keywords  
$array=['cat',mouse'dog']  
foreach( $array as $keyword){
//embed video
}

根据此tutorial,了解如何按关键字嵌入Youtube视频。

嵌入Youtube的推荐方法是使用IFrame。因为IFrame会根据客户端的功能和可用的YouTube文件格式选择合适的播放器。

应用程序中的<iframe>标记,其中src URL指定播放器将加载的内容以及您要设置的任何其他播放器参数。

如果您自己创建<iframe>元素(而不是使用IFrame Player API创建它),则可以将播放器参数直接附加到URL的末尾。该URL具有以下格式:

http://www.youtube.com/embed/VIDEO_ID 

下面的<iframe>标记会加载一个640 x 480像素的播放器来播放YouTube视频doLy-jFSFNo。

由于URL将autoplay参数设置为1,因此一旦播放器加载,视频就会自动播放。

<iframe id="ytplayer" src="http://www.youtube.com/embed/doLy-jFSFNo?autoplay=1&origin=http://www.mr2t.com" frameborder="0" width="640" height="480"></iframe>

还要尝试检查一下,How to embed YouTube videos in PHP?