Reputation: 37
I'm parsing XML link. I'm getting the title of the broadcast now, but i can't to get the title of the next broadcast. If anyone can help me, I would be grateful,
<?php
$url = 'https://hls.airy.tv/airytv/33';
$xml=simplexml_load_file("$url");
$line = 0;
$time = date( "YmdHi" );
foreach($xml->xpath('programme[@channel="33"]') as $item) {
$start = substr( (string)$item["start"], 0, -8);
$end = substr( (string)$item["stop"], 0, -8);
if ($time > $start && $time < $end) {
echo "Now : ".$item->title. "<br>";
echo "Next : ".$item->title.[$line+1];
}
$line++;
}
?>
OUTPUT
Now : Let's_Go_Thailand_Koh_Lanta;_a_place_the_discover_Ep_021
Next : Let's_Go_Thailand_Koh_Lanta;_a_place_the_discover_Ep_021Array
XML
<programme start="20220623090024 +0000" stop="20220623093300 +0000" channel="33">
<title lang="en">Let's_Go_Thailand_Koh_Lanta;_a_place_the_discover_Ep_021</title>
<sub-title lang="en">Let's_Go_Thailand_Koh_Lanta;_a_place_the_discover_Ep_021</sub-title>
<desc lang="en"/>
<date>20220623</date>
<publisher/>
<category lang="en">Featured</category>
<category lang="en">Airy TV 1</category>
</programme>
<programme start="20220623093300 +0000" stop="20220623100301 +0000" channel="33">
<title lang="en">Let's_Go_Thailand_Moment_by_Moment_Harvest_Ep_023</title>
<sub-title lang="en">Let's_Go_Thailand_Moment_by_Moment_Harvest_Ep_023</sub-title>
<desc lang="en"/>
<date>20220623</date>
<publisher/>
<category lang="en">Featured</category>
<category lang="en">Airy TV 1</category>
</programme>
Upvotes: 2
Views: 81
Reputation: 1518
Try this, it is working for me:
<?php
$url = 'https://hls.airy.tv/airytv/33';
$xml=simplexml_load_file("$url");
$time = date( "YmdHi" );
$currTitle = null;
$nextTitle = 'N/A';
foreach($xml->xpath('programme[@channel="33"]') as $item)
{
if ($currTitle != null)
{
$nextTitle = $item->title;
break;
}
$start = substr( (string)$item["start"], 0, -8);
$end = substr( (string)$item["stop"], 0, -8);
if ($time > $start && $time < $end)
{
$currTitle = $item->title;
}
}
echo "Now : $currTitle<br />Next : $nextTitle";
?>
I don't think you can do a lookahead like you're trying to do with the foreach, so you can just save off the the title when you find the record with the appropriate time, and let the loop progress one more time to pick up the next record.
Upvotes: 2