Diskuze: Tahání dat z webů
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
můžeš použít třeba cURL a možná to jde i jen s pomocí
$content = file_get_contents("http://webova.stranka.cz/slozka/soubor.json");
ale u toho je, myslím, potřeba povolit nějaké direktivy.
Když jsme nad tím tak přemýšlel, tak to asi bude nejrozumnější přes javu. Javou si stáhnu data a hodím je do databáze a php si je vytáhne.
Volím také toto řešení, protože v Javě jsem dál než v PHP
Pokud je nepotřebuješ přímo při provádění scriptu, pak je asi jedno, jak je vytaháš. PHP ti nabízí např. zmíněné cURL, které ti ta data ze serveru stáhne během programu, takže je můžeš rovnou použít.
S "čistým" cURL jsem už docela dlouho nedělal, takže nezaručuji, že to bude správně - ale jako nástin toho, jak by to mohlo vypadat:
$curl = curl_init();
// adresa webu
curl_setopt($curl, CURLOPT_URL, "http://webova.stranka.cz/slozka/soubor.json");
// aby se vrátil výsledek
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($curl);
curl_close($curl);
// předpokládá, že data z webu budou ve formátu JSON
// jinak by to mělo vracet HTML vygenerovaného dokumentu, takže si můžeš hrát třeba s regulárními výrazy
$array = json_decode($result);
echo "<pre>";
var_dump($array);
foreach ($array["people"] as $person) {
echo "#" . $person["id"] . " " .$person["name"] . "<br />";
}
Pro ukázkový JSON:
{
"people": [
{"id": 1, "name": "Martin Kone"},
{"id": 5, "name": "Vakos"},
{"id": 10, "name": "Lionel Messi"}
]
}
by měla funkce json_decode() do proměnné $array uložit:
array(
"people" => array(
0 => array("id" => 1, "name" => "Martin Kone"),
1 => array("id" => 5, "name" => "Vakos"),
2 => array("id" => 1, "name" => "Lionel Messi"),
)
)
Více info k:
cURL - http://php.net/…ook.curl.php
JSON - http://json.org/example
dotaz na Stack Overflow - http://stackoverflow.com/…ode-the-data
Zobrazeno 4 zpráv z 4.