Autor Zpráva
NefungujeMiTo
Profil *
Čaute, mám php script, který přebírá xml feed od ČNB.

Jedná se o feed s kurzy na daný den, bohužel se mi nedaří vybrat atribut řádku.

feed : http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.xml

Vrátí mi to pole : array(1) { [0]=> object(SimpleXMLElement)#2 (1) { ["@attributes"]=> array(5) { ["kod"]=> string(3) "USD" ["mena"]=> string(5) "dolar" ["mnozstvi"]=> string(1) "1" ["kurz"]=> string(6) "20,391" ["zeme"]=> string(3) "USA" } } }

Z toho pole potřebuji vytáhnout kurz, kurz je atribut, resp. potřebuji vytáhnout hodnotu toho atributu.

Zkoušel jsem nesmírně hodně možností, jak to provést, ale ani jedna se neosvědčila.
Možná by se k tomu dalo přistoupit přes pole, netuším.

Děkuji za každý nápad + přikládám celý script :

<?php
  if(!empty($_POST['shape']) and !empty($_POST['clarity']) and !empty($_POST['size']) and !empty($_POST['color']) and !empty($_POST['date'])){
    $shape = $_POST['shape'];
    $clarity = $_POST['clarity'];
    $size = $_POST['size'];
    $color = $_POST['color'];
    $date = $_POST['date'];
    if (!DateTime::createFromFormat('d.m.Y', $date)){
      echo "<p style='color: red;'>Bylo zadáno nevalidní datum.</p>";
    }
    $xml = simplexml_load_file("http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.xml?date=$date");
    $kurz = $xml->xpath("//radek[@kod='USD']");
    echo $kurz['kurz']; //nefunguje
    $rapaport = 64;
    $usd = $size * 64 * 100;
    echo "<p style='color: green;'>Cena diamantu je : <b>$czk</b></p>";
  }else{
        echo "<p style='color: red;'>Některá pole nebyla vyplněna.</p>";
}

?>
janbarasek
Profil
NefungujeMiTo:
Je to asi prasárna, ale taky bys to mohl parsovat pomocí explode a funkce:
<?php
// funkce na získání části (odněkud - někam)
function parser($data, $a, $b) {
    $parser = explode($a, $data);
    $parser_a = explode($b, $parser[1]);
    return $parser_a[0];
}
// tady bude cykl, co to projde
$data = file_get_contents('http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.xml');
$i = 0;
$parser = explode('<radek', $data);
while (isset($parser[$i])) {
  echo parser($parser[$i], 'kurz="', '"').'<br>';
  $i++;
}
?>

Pokud chceš vytáhnout víc informací, tak si uprav výpis funkce parser(); na řádku 13. Je to celkem jednoduché a funguje to.
NefungujeMiTo
Profil *
Ano, je to prasárna, vyřešil jsem to jinou prasárnou.
    $feed = file_get_contents("http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date=$date");
    $feed = explode('|', $feed);
    foreach($feed as $key => $val){
      if($val == "USD"){
        $k = $key + 1;
        break;
      }
    }
    $kurz = $feed[$k];
Fisir
Profil
Reaguji na NefungujeMiTa:
Využívá se metoda (?) attributes().

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