2011-08-04 38 views
0

我有工作腳本顯示頁面上的YouTube視頻,但我需要它從單獨的(txt)文件讀取數組中的地址。我嘗試了幾個解決方案,但尚未找到一個工作。 聰明人的幫助!無法正確讀取txt文件到PHP陣列

我的工作代碼使用數組是這樣的:

$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

目前還不清楚你正在嘗試做什麼,或者目前代碼中目前失敗的內容。請閱讀http://tinyurl.com/so-hints –

+0

請勿發佈您的工作代碼。將您嘗試使用的代碼從文本文件讀取到數組中。這就是你想要的幫助,所以這是我們不需要看的。 – gnud

回答

0

我只是將您的代碼複製到本地安裝的XAMPP。

沒有在查詢字符串「V」參數,視頻列表中所示,每個顯示縮略圖和標題和重定向回到同一頁面的鏈接中,但包括一個「V」的參數。

點擊縮略圖加載顯示所選視頻的YouTube播放器的頁面。

我看到這裏沒有任何問題......

0

我從你的問題,你想從多個文件中讀取視頻ID,並將其合併到一個PHP數組明白了嗎?我對麼?

此外,我建議使用Zend_gdata API YouTube的功能,它的簡單與許多其他的選擇,你可以嘗試

0

我想主要的概念/問題是到IDS存儲在一個txt文件,並宣讀他們,而不是讓他們存儲在一個陣列中嗎?

<?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,filesize($ tube))); } – dogcat