2011-08-04 11 views
0

私はページ上にYouTubeの動画を表示するスクリプトを用意していますが、別の(txt)ファイルから配列のアドレスを読み取る必要があります。私はいくつかのソリューションを試しましたが、まだ1つの解決策を見つけていません。 スマートな人々の助けを借りてください!PHPの配列に正しくtxtファイルを読み込むことができません

私の作業コードは、このような配列を使用している:

$video = array('JObJ7vuppGE', 'BsmE6leTbkc', 'zWtj4TEVLvU');// array of youtube videos 

私が代わりに使用することを計画して何を:

$tube = $_SERVER['DOCUMENT_ROOT'] .'/youtube.txt';// IDs of youtube videos inside 

$lines = file($tube); 

foreach($lines as $line_num => $line) 

$video = array($line);// array of youtube videos 

$v = preg_replace("/[^A-Za-z0-9\-\_]/", "", $_GET["v"]); // make sure "v" parameter is sanitized 

if(!empty($v) && in_array($v, $video)) //check if parameter "v" is empty and is yours video 
{ 
    echo '<object width="853" height="505"><param name="movie" value="http://www.youtube.com/v/' . $v . '&hl=en_US&fs=1&hd=1&color1=0xe1600f&color2=0xfebd01"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param> 
    <embed src="http://www.youtube.com/v/' . $v . '&hl=en_US&fs=1&hd=1&color1=0xe1600f&color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="853" height="505"></embed> 
    </object>'; 
} 
else 
{ 
    foreach($video as $v) 
    { 
     echo '<div class="tube"> 
      <a href="/sites/tube.php?v=' . $v . '" class="thickbox"> 
       <img style="border: 2px solid #000; margin: 5px;" alt="" src="http://i1.ytimg.com/vi/' . $v . '/default.jpg"/> 
      </a>'; 

      $xmlData = simplexml_load_string(utf8_encode(file_get_contents('http://gdata.youtube.com/feeds/api/videos/' . $v . '?fields=title,yt:recorded'))); 
      $title = (string)$xmlData->title; 
      $entry = $xmlData; 

      $namespaces = $entry->getNameSpaces(true); 
      $yr = $entry->children((string)$namespaces['yt']); 

      // get <yt:recorded> node for date and replace yyyy-mm-dd to dd.mm.yyyy 
      $year = substr($yr->recorded, 0, 4); 
      $month = substr($yr->recorded, 5, 2); 
      $day = substr($yr->recorded, 8, 2); 
      $recorddate = $day . "." . $month . "." . $year; 

      echo '<p>' . $recorddate . '<br>' . $title . '<br> 
      </p> 
     </div>'; 
    } 
} 

は、残念ながら私はtxtファイルの最初の行のみを読み取ることができています。少なくとも私は最初のビデオをページにしか表示できません。私のアプローチは明らかに間違っています。 そして、私のコードは混乱しています。それが計画どおりに機能する限り、自由に変更して改善してください。

+1

問題がなければ、問題のタイトルとタグにスクリプトの言語を追加してください。 – sudmong

+2

あなたが何をしようとしているのか、現時点であなたが手にしているコードで現在何が失敗しているのかははっきりしません。 –

+0

作業コードを投稿しないでください。http://tinyurl.com/so-hints試したコードをテキストファイルから配列に読み込みます。それはあなたが手助けしたいビットなので、私たちが見る必要はありません。 – gnud

答えて

0

XAMPPのローカルインストールにコードをコピーしました。

クエリ文字列に 'v'パラメータがないと、サムネイルとタイトルが表示され、同じページにリダイレクトされたリンク内に 'v'パラメータが含まれた動画リストが表示されました。

サムネイルをクリックすると、選択した動画のYouTubeプレーヤーを示すページが読み込まれます。

私はここに何の問題を見ていない...私はあなたの質問から理解

0

何が複数のファイルからの動画IDを読み、1つのPHPの配列にそれを組み合わせるしたいですか?私は正しい?

また、私は私が主なアイデア/質問はtxtファイル内のIDを格納し、むしろそれらが保存されたよりもそれらを読むことだったと思うあなたは

0

を試すことができ、他の多くのオプションを持つシンプルなユーチューブ機能のためのZend_GdataにAPIを使用することをお勧めアレイで正しく?

<?php 

/** 
* @author - Sephedo 
* @for - dogcat @ Stackoverflow 
* @question - http://stackoverflow.com/questions/6936958/cant-read-txt-file-correctly-to-php-array 
*/ 

$filename = "youtube.txt"; 

// Open the file 
if($handle = @fopen($filename, "r")) 
{ 
    // Cycle each line until end 
    while(! feof($handle)) 
    { 
     $line = fgets($handle); // Read the line 

     $youtube[] = $line; 
    } 
} 

if(! isset($youtube)) $youtube = array(); 

foreach($youtube as $videoId) 
{ 
    echo $videoId; // Etc etc etc..... 
} 

?> 
+0

あなたは正しいです。私は最終的に別の行に格納されている各YouTubeの配列とtxtファイルを読むことを管理しました。それが最善の解決策であるかどうかわかりませんが、このようなコードを使用してください。 $ tube = $ _SERVER ['DOCUMENT_ROOT']。 '/ lehele/vids/youtube2012.txt'; $ fp = @fopen($ tube、 'r'); if($ fp){$ video = explode( "\ n"、fread($ fp、ファイルサイズ($チューブ))); } – dogcat

関連する問題