Autor | Zpráva | ||
---|---|---|---|
NefungujeMiTo Profil * |
#1 · Zasláno: 3. 2. 2014, 17:29:59
Č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 |
#2 · Zasláno: 3. 2. 2014, 19:56:41
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 * |
#3 · Zasláno: 3. 2. 2014, 20:27:40
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 |
#4 · Zasláno: 3. 2. 2014, 20:30:42
Reaguji na NefungujeMiTa:
Využívá se metoda (?) attributes(). |
||
Časová prodleva: 10 let
|
0