Autor Zpráva
mot
Profil *
Zdravím, obracím se na vás s prosbou o návrh řešení. Dostávám aktuální teplotu pomocí http://lkso.dyndns.org:85/teplota_plovarna.php. Chci si teplotu ukládat do databáze. V php mám zatím
<?php
    $teplota = file_get_contents('http://lkso.dyndns.org:85/teplota_plovarna.php');
    echo $teplota;
?>
teď bych potřeboval vykuchat pouze teplota z
<span>teplota</span>
Napadlo mě řešení přes funkce strlen a substr. Jenže toto mi připadá strašně těžkopádné. Existuje elegantnější řešení?
Fisir
Profil
Reaguji na mota:
preg_match("/<span>((\d+)(,\d+)?) °C<\/span>/", $teplota, $teplota);
$teplota = str_replace(",", ".", $teplota[1])*1;
Hodnotu $teplota si můžeš ukládat do databáze rovnou jako číslo.
mot
Profil *
Fisir:
Děkuji! Jinak " °C" jsem měl v plánu odstranit a "," nahradit za "." taky. Jsem PHP samouk (mám za sebou 2 semestry javy, takže nějaký to povědomí o programování mám). Ještě jednou děkuji za radu ;)
mot
Profil *
Když to zkouším, háže to chybu Notice: Undefined offset: 1 in C:\wamp\www\teplota.php on line 4

<?php
    $teplota = file_get_contents('http://lkso.dyndns.org:85/teplota_plovarna.php');
    preg_match("/<span>((\d+)(,\d+)?) °C<\/span>/", $teplota, $teplota);
    $teplota = str_replace(",", ".", $teplota[1])*1;
    echo $teplota[1];
?>
Fisir
Profil
Reaguji na mota:
Použij jen echo($teplota);.
mot
Profil *
Stále to samé. Před tím, jsem to echo měnil a stejně na to nemá vliv, protože chyba je na řádku $teplota = str_replace(",", ".", $teplota[1])*1;
juriad
Profil
Toto funguje:
<?php
    $teplota = file_get_contents('http://lkso.dyndns.org:85/teplota_plovarna.php');
    preg_match("/<span>(-?(\d+)(,\d+)?) \xb0C<\/span>/", $teplota, $teplota);
    $teplota = str_replace(",", ".", $teplota[1])*1;
    echo $teplota;
?>

1) zapomněl jsi na záporné hodnoty
2) znak stupeň je zakódován jako byte \xb0; se znakem stupeň mi to nefungovalo
mot
Profil *
Děkuji za příspěvek. Když jsem to zkoušel odpoledne, tak bylo nad nulou a stejně to nefungovalo.
rafej
Profil
Verze od juriada bez problémů funguje. Jediné, co mě napadá je, zda máš správně nastavené kódování.
Tori
Profil
Jelikož na té stránce nic jiného není, tak bych klidně použila i méně přesné zadání:
preg_match("/<span>(-?(\d+)(,\d+)?) .C<\/span>/", $teplota, $teplota);

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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