2013-10-19 63 views
0

我有一個頻道發佈網站,我想進入CNN頻道的頻道節目。 CNN在這裏播出的節目(你可以在源文件 - XML文件中看到):用XML錄製電視節目

http://tvprofil.net/xmltv/data/cnn.info/weekly_cnn.info_tvprofil.net.xml 

如何根據提取的時間數據?

例如:

Now program: "bitmez's table" 
next program: "stack's table" in 30 minute 

這可能嗎?

更新1:

我可以把XML數據,但所有的XML實現文件

<?php 

$url = 'http://tvprofil.net/xmltv/data/cnn.info/weekly_cnn.info_tvprofil.net.xml'; 
$xml = simplexml_load_file($url); 
if (!$xml) { 
    trigger_error('XML file -- read error',E_USER_ERROR); 
    return; 
} 

foreach ($xml as $programme) { 
    echo 'Now: ', $programme->title, "<br>\n"; 
} 
+0

在Stackoverflow上詢問「是否可能」沒有多大意義,因爲答案肯定是:*「是」*,然後你就像在提出問題之前一樣。相反,試着解釋你究竟做了什麼以及什麼使你很難實現它。說出「現在的程序」有哪些標準,「下一個程序」有哪些標準以及兩者如何相互關聯。數據連接通常是解決這類問題的關鍵。 – hakre

+0

@hakre感謝您的幫助!謝謝!!你怎麼能做到這一點?例如:「Now:hakre's table」。在XML文件中有開始時間和結束時間。開始時間會釋放程序的名稱,這是如何完成的? – bitmez4

+0

時間總是相對的。所以它首先找到說現在實際上是什麼的地方。 – hakre

回答

2
<?php 

$url = 'weekly_cnn.info_tvprofil.net.xml'; 
$xml = simplexml_load_file($url); 

$now = new DateTime('now'); 
$it = new IteratorIterator($xml->programme); 

foreach ($it as $programm) 
{ 
    $start = DateTime::createFromFormat('YmdHis', $programm['start']); 
    if ($start > $now) 
    break;  
} 

echo 'Now: ', $programme->title; 
$it->next(); 
if ($it->valid) { 
    echo 'Next: ', $it->current()->title; 
} 

請不要給我發電子郵件的請求,只是因爲用我回答你的question,並不意味着我需要再做一次。它基本上是一樣的,爲了你自己的緣故,通過使用手冊來學習。 Cheeers。

+0

我正在查看它!你是KING!:) – bitmez4

+0

@hakre謝謝:) –

+0

非常感謝,如何自動刷新可以做到?沒有頁面刷新。可以續約30分鐘嗎? – bitmez4

-1

你需要得到的屬性,並比較它們

$url = 'http://tvprofil.net/xmltv/data/cnn.info/weekly_cnn.info_tvprofil.net.xml'; 
$array = (array) simplexml_load_file($url); 

// FLATTEN THE RESULT SET 
$programmes = array(); 
foreach ($array as $k => $v) 
{ 
    if ($k == 'programme'){ 
     foreach($v as $p) 
     { 
      $programmes[] = (array) $p; 
     } 
     break; 
    } 
} 

$tim = time(); 
$now = array(); 
$nex = array(); 

foreach ($programmes as $show) 
{ 
    $attr = $show['@attributes']; 
    if ($tim >= $attr['start'] && $tim <= $attr['stop']) 
    { 
     // GETS THE CURRENT SHOW 
     $now = $show; 
    } 
} 

print_r($now); 
+0

謝謝,但程序名稱不在屏幕上 – bitmez4

+0

這是正確的? - http://img713.imageshack.us/img713/6192/byes.png – bitmez4

+0

你可以給我完整的PHP代碼嗎?因爲,我認爲添加了錯誤的代碼。 – bitmez4