| 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: 13 let
|
|||
0