Seconden uit script halen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ward S

Ward S

15/01/2020 18:38:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<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!

Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht. Quotes zijn enkel bedoeld voor het citeren van tekst.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 15/01/2020 19:23:37 door - Ariën -
 
PHP hulp

PHP hulp

29/01/2020 00:01:41
 
- Ariën -
Beheerder

- Ariën -

15/01/2020 19:34:36
Quote Anchor link
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.
 
Michael -

Michael -

15/01/2020 19:57:17
Quote Anchor link
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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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);
?>
Gewijzigd op 15/01/2020 20:00:11 door Michael -
 
Ward S

Ward S

15/01/2020 20:42:15
Quote Anchor link
- 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 https://www.w3schools.com/jsref/dom_obj_document.asp zie ik een hoop functies, maar welke heb ik nu nodig?
Gewijzigd op 15/01/2020 21:10:32 door Ward S
 
Michael -

Michael -

15/01/2020 21:14:36
Quote Anchor link
Ward S op 15/01/2020 20:42:15:
Dank voor de feedback! Ik ben wat php betreft echt een leek. Op https://www.w3schools.com/jsref/dom_obj_document.asp 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'.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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.
Gewijzigd op 16/01/2020 01:18:42 door Michael -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.