Beste allemaal,

Sinds een aantal weken ben ik met een paar man een nieuw online radio-station begonnen.
Ik mag daarvoor de website bijhouden.

Via een site heb ik een PHP-script gevonden dat de laatste 10 gedraaide platen toont op onze site.
Dit wordt middels een i-frame ingeladen.
In dit script wordt naast artiest-titel ook de tijd weergeven in uren-minuten-seconden.
Van dat laatste wil ik heel graag af, maar ik ben nogal een leek wat betreft PHP.
Het gaat om onderstaand script:

<link rel="stylesheet" href="style2.css">
<meta http-equiv="refresh" content="50;URL=history.php"> 
<?php
set_time_limit(0); 
$open = fsockopen("213.222.25.84",8472,$errno,$errstr,1); 
$out = "GET /played.html HTTP/1.1\nUser-Agent:Mozilla\n\n"; 
fwrite($open,$out); 
while (!feof($open)) { 
$data = fgets($open, 2000000); 
} 
$data = explode("Song Title",$data); 
$data = explode("</table>",$data[1]); 
$data = str_replace("</b>","<b>",$data[0]); 
$data = str_replace("Current Song"," (NU ON AIR)",$data);
$data = str_replace("</tr><tr>","<br>",$data); 
$data = str_replace("</td><td>"," - ",$data); 
echo $data;
fclose($open); 
?>


Ik heb al meerdere site bezocht en een hoop zelf geprobeerd, $date ("H:i") invullen etc, maar het wil niet lukken. Wat zie ik over het hoofd?
Het werkende script is hier te zien: https://www.radio202.nl/history.php

Hopelijk dat iemand mij hier kan helpen!

Dan moet je eerst de datum extraheren uit de code. Alleen is het jammer dat je dit steeds overschrijft met $data. Dat maakt het lastig om te achterhalen waar de datum in zit.

Eigenlijk zou het mooier zijn met DOMdocument() de HTML uit te lezen, en de data eruit te extraheren zodat je zelf alles zelf een eigen vorm kan geven.


Ik zou inderdaad, zoals Arien zegt, de data tussen <td> en </td> opslaan zodat je een array hebt met schone data die je zelf kunt vormgeven ipv allerlei trucjes uit te voeren.

Maar als je toch bezig bent met alles 'replacen' kun je dit toch ook gewoon met de tijd doen?

<?php
//2 digits : 2 digits : 2 digits spatie streep spatie, vervangen door niks.*
$newdata = preg_replace("/\d{2}:\d{2}:\d{2}\s-\s/", "", $data);
?>
- Ariën - op 15/01/2020 19:34:36

Dan moet je eerst de datum extraheren uit de code. Alleen is het jammer dat je dit steeds overschrijft met $data. Dat maakt het lastig om te achterhalen waar de datum in zit.

Eigenlijk zou het mooier zijn met DOMdocument() de HTML uit te lezen, en de data eruit te extraheren zodat je zelf alles zelf een eigen vorm kan geven.





Dank voor de feedback! Ik ben wat php betreft echt een leek. Op zie ik een hoop functies, maar welke heb ik nu nodig?
Ward S op 15/01/2020 20:42:15

Dank voor de feedback! Ik ben wat php betreft echt een leek. Op zie ik een hoop functies, maar welke heb ik nu nodig?


Op deze manier krijg je alleen de titels.
De $i is voor het overslaan van 'Song title'.
<?php
$dom = new domDocument;
@$dom->loadHTML($data);
$xpath = new DOMXPath($dom);
$items = $xpath->query("//table//td[2]");
$i = 0;
foreach($items as $item) {
if($i > 1) {
echo $item->nodeValue . '<br>';
}
$i++;
}
?>
output

Green Day - Know Your Enemy
Secondcity - What Can I Do
A-Ha - Take on Me
Charles & Eddie - Would I Lie to You?
Supergrass - Pumping on Your Stereo
Nightcrawlers - Push the Feeling On
The Rolling Stones - Undercover of the Night
The Isley Brothers - (Can't You See) What You Do To Me?
Elton John - I'm Still Standing
Taylor Dayne - Tell it to My Heart


Edit: antwoord uitgebreid.

Reageren