Autor Zpráva
mitchi
Profil *
Zdravím, prosím o pomoc s načtením dat ze souboru.

Obsah souboru:
[
{'channel':'XXX','name':'XXX','preview':'url.jpg?','stream':'urllink','programme':[
['15:40','nazev akce'],
['16:05','nazev akce 2'],
]},
]

zkouším pomocí níže uvedeného skriptu nedaří se. Vždy mi to načte celý obsah ale já potřebuji načíst jednotlivé položky a ty rozdělit

<?php
$soubor = 'channels.cgi';
if (!File_Exists ($soubor)) {
    exit("<P>Nelze najít soubor $soubor.\n\n");
}
$klika = fopen($soubor, 'r');
if ($klika == false) {
    exit("<P>Nelze otevřít soubor $soubor ke čtení.\n\n");
}
$data = fread ($klika, filesize ($soubor));
fclose ($klika);

$radky = explode ( "\n", $data );
while (list(, $radek) = each ($radky)) {
    list($name, $preview, $stream) = explode('', $radek);
    echo "$name\n";
}
?> 

Výstupem by měli být vypsané data které bych pak následně dále zpracoval.

něco jako

echo "<h2>$name</h2>\n";
echo "<a href="stream"><img src="$preview"></a>\n";

Předem děkuji za nakopnutí :)
Mitchi
Jan Tvrdík
Profil
mitchi:
Není to náhodou obyčejný JSON? Koukni na json_decode.
mitchi
Profil *
Jan Tvrdík:

A jo díky. Já věděl že mi to něco přípomíná :)
Jan Tvrdík
Profil
PHP parser je striktnější, než jsem předpokládal bude to chtít drobné korekce:

$s = str_replace('\'', '"', $s); // JSON podporuje jen dvojité uvozovky
$s = preg_replace('#,\s*\]#', ']', $s); // za posledním prvkem nesmí být čárka

Ty náhrady jsou dost hrubé, možná to bude potřeba napsat pořádně.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: