youtube api search.php ошибка цикла foreach

Мой результат поиска API YouTube получает скрипт php. Отображает ошибки:

search.php

<?php
 $ytapi="http://gdata.youtube.com";
?>

<!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">
  <meta content='width=device-width, initial-scale=1, maximum-scale=1' name='viewport'/>
<meta charset='UTF-8'/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Searching for videos by keyword - Muftatube</title>
    <style>
 p{font-size: 30px;color: #FFE131; font-weight: bold;}
    td {
      vertical-align: top;
    }
    td.line {
      border-bottom: solid 1px black;
    }a{color: #ff0000; font-weight:bold; text-size: 18px;}
a:hover {
background-color: yellow;
 }</style>
  </head>
  <body
<form action="search.php" method="get">
      Search: 
      <input type="text" name="vq" /> 
      Items per page: 
      <select name="i">
        <option value="10">10</option>
        <option value="25">25</option>
        <option value="50">50</option>
      </select>
      <input type="submit" name="submit" value="Search"/>
</form></div>
<div id="nav">
</div>

<div id="section" text-align="center">

    <?php
    // if form not submitted
    // display search box
    if (!isset($_GET['vq'])) {

echo "<h2>Welcome to FullMufta Tube</h2><br /> This Is Search Page Go to home To serch and browse Videos";
    // if form submitted
    } else {
      // check for search keywords
      // trim whitespace
      // encode search string
      if (!isset($_GET['vq']) || empty($_GET['vq'])) {
        die ('ERROR: Please enter one or more search keywords');
      } else {
        $vqs = $_GET['vq'];
        $vq = ereg_replace('[[:space:]]+', ' ', trim($vqs));
        $vq = urlencode($vq);
      }

      // set max results per page
      if (!isset($_GET['i']) || empty($_GET['i'])) {
        $i = 10;
      } else {
        $i = htmlentities($_GET['i']);
        if($i>100)exit;
      }
      // set start index
      if (!isset($_GET['pageID']) || $_GET['pageID'] <= 0) {
        $o = 1;
      } else {
        $pageID = htmlentities($_GET['pageID']);
        $o = (($pageID-1) * $i)+1;
      }

      // generate feed URL
      $feedURL = $ytapi."/feeds/api/videos?vq={$vq}&max-results={$i}&start-index={$o}";

      // read feed into SimpleXML object
      $sxml = simplexml_load_file($feedURL);
        echo '<!-- $feedURL: '.$feedURL.' -->';
      ?>

      <h1>Search results: </h1><h4><?php echo $vqs; ?></h4>
<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 <yt:duration> node for video length
        $yt = $media->children($ytapi.'/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;
        }

        // get video ID
        $arr = explode('/',$entry->id);
        $id = $arr[count($arr)-1];

        // print record
        preg_match('#v\=(.*?)\&#',$watch,$vid);
        $watch='watch/?vid='.$vid[1];
        echo "<tr><td colspan=\"2\" class=\"line\"></td></tr>\n";
        echo "<tr>\n";
        echo "<td><a href=\"{$watch}\">
        <img src=\"fullmuftaimg.php?vid=$vid[1]&sz=0\"/></a></td>\n";
        echo "<td><a href=\"{$watch}\">
        {$media->group->title}</a><br/>\n";
        echo sprintf("%0.2f", $length/60) . " min. | {$rating} user rating |
        {$viewCount} views<br/>\n";
        echo $media->group->description . "<br/>\n";
        echo "</td></tr>\n";
      }
    }
    ?>
    </table>
  </body>
</html>

Он работал раньше, но теперь не работает. Я изменил сервер и запустил его снова, но результаты поиска не отображаются.

Сообщение об ошибке

Устаревший: функция ereg_replace() устарела в /home/u691059747/public_html/search.php в строке 69 Предупреждение: simplexml_load_file(): http://gdata.youtube.com/feeds/api/videos?vq=dj&max-results=10&start-index=1:1: ошибка синтаксического анализатора: документ пуст в /home/u691059747/public_html/search.php в строке 92 Предупреждение: simplexml_load_file(): в /home/u691059747/public_html/search.php в строке 92 Предупреждение: simplexml_load_file(): ^ в /home/u691059747/public_html/search.php в строке 92 Предупреждение: simplexml_load_file(): http://gdata.youtube.com/feeds/api/videos?vq=dj&max-results=10&start-index=1:1: ошибка синтаксического анализатора: ожидается начальный тег, '<' не найден в /home/u691059747/public_html/search.php в строке 92 Предупреждение: simplexml_load_file(): в /home/u691059747/public_html/search.php в строке 92 Предупреждение: simplexml_load_file(): ^ в /home/u691059747/public_html/search.php в строке 92

Результаты поиска:

Предупреждение: неверный аргумент указан для foreach() в /home/u691059747/public_html/search.php в строке 101

1 ответ

Просто обратите внимание, что YouTube отключил получение информации с помощью API v2, и вам следует переключиться на версию 3.

Но в любом случае, когда я печатаю $feedURL переменная в вашем search.php Я получаю то есть:

http://gdata.youtube.com/feeds/api/videos?vq=dj&max-results=10&start-index=1

Просмотр этого URL дает вывод:

No longer available

Поэтому вам следует сначала попытаться выяснить, почему этот URL-адрес YouTube больше не работает (если не V2/3, то, возможно, имена параметров изменились / etc ...)

А поскольку приведенная выше строка является просто текстом, а не допустимой строкой XML, вы получаете ошибку PHP:

 parser error : Start tag expected, '<' not found in 
Другие вопросы по тегам