21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Chatík
Profil
Dobrý den,
získávám informace o tom co se právě vysílá za skladbu pomocí následujícího scriptu:
  $platnost = 30; // 60 s 
  $soubor = "cache/" . urlencode($url);

  if (
      file_exists($soubor) && 
      (filemtime($soubor) > time() - $platnost)
     ) {
    // vrátíme obsah z keše
    return file_get_contents($soubor);
  }
  else {
    // obsah se musí stáhnout z cizí URL
    $obsah = file_get_contents($url);
    if ($obsah) {
      // uložení obsahu do cache
      file_put_contents($soubor, $obsah);
    }
    return $obsah;
  }
}
echo ziskatSouborCache(
  "http://www.181.fm/station_playing/181-realcountry.html"
);
Náčítá se mi takto celá stránka: http://www.181.fm/station_playing/181-realcountry.html
Ovšem chtěl bych vypsat jen to co hraje to znamené interpreta a skladbu.
Jak to udělat?
Není to uzavřené v žádném speciálním tagu jen v tagu <font>
Např.
<!--startcurrent-->
        <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#ffffff" style="margin:0px 0px 0px 4px">Jimmy Wayne - Do You Believe Me Now (Radio Edit)</font>
    <!--endcurrent-->

Jak to z toho mám vytáhnout?
Děkuji za pomoc.
juriad
Profil
Trošku bych to zjednodušil:

<?php
function ziskatSouborCache($url) {
  $platnost = 30; // 60 s 
  $soubor = urlencode($url);

  if ( // všimni si, že jsem otočil podmínku
      ! file_exists($soubor) ||
      (filemtime($soubor) <= time() - $platnost)
     ) {
    // obsah se musí stáhnout z cizí URL
    $obsah = file_get_contents($url);
    preg_match('/startcurrent.*">(.*)<\/.*endcurrent/s', $obsah, $match);
    // uložení obsahu do cache
    file_put_contents($soubor, $match[1]);
  }
  // obsah je určitě v cachi
  return file_get_contents($soubor);
}

Ten šílený regulární výraz v podstatě jen hledá vše mezi znaky ">, které jsou za startcurrent, a znaky </, které jsou před endcurrent.
Chatík
Profil
juriad:
Úplně suprový, moc děkuji.


Ještě mám dotaz, proč se to nemění samo po uplinutí 30 vteřin, když se na zdrojové stránce informace změní?
Vždy musím dát F5 a to čekám i minutu jestli se to nezmění a to na zdrojové stránce už je jiná informace
Chatík
Profil
juriad:
Už vím, není tam nic co by tu stránku aktualizovalo, udělám to javascriptem.
Díky moc za Váš čas.
blaaablaaa
Profil
Chatík:
K tomuto pouzij AJAX (vice napovi google).

Moderátor juriad: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.

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:

0