| Autor | Zpráva | ||
|---|---|---|---|
| karlanka Profil * |
#1 · Zasláno: 28. 4. 2008, 15:52:41
ahoj,
chci zkopírovat xml výstup z jednoho webu pomocí příkazu COPY. Výpis má adresu např. www.xxx.xx/export.php. Když však použiju příkaz COPY, tak se soubor uloží v binárním formátu, čili nepoužitelný. Stejně je to i při použití metod CURL a GET_CONTENTS. Je nějaký způsob jak tento export uložit jako plain text? (Samotný php výstup je jednoduché XML). Díky |
||
| starenka Profil * |
#2 · Zasláno: 28. 4. 2008, 16:30:49
http://cz2.php.net/manual/en/function.file-get-contents.php
nebo
function grab_url($url)
{
$content = "";
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
$content = curl_exec ($ch);
curl_close ($ch);
return($content);
}
nechapu, co je "binarni" format? jses si jistej/a, ze ten export skript posila spravnej content-type? |
||
| karlanka Profil * |
#3 · Zasláno: 28. 4. 2008, 17:47:06
get_contents jsem taky zkoušela... když se pak podívám do souboru nebo vyechuju string, tak to vrátí nějakej chaos typu:
‹������ěýIŹ#I–&Š®_�ńÄ뢙x¦$•33ëV§ŚÁG¸yxFććAH7Şé lťÂÉ_s·˝©UoŘşŢ_¸ŔĂ�Z�$... z toho usuzuju, že to nezpracovává jako plain text. |
||
| bukaj Profil |
#4 · Zasláno: 28. 4. 2008, 19:18:08
karlanka
Metody, jak získat data z jiného serveru jako file_get_contents(), CURL aj., zpracovávají to, co dostanou v odpovědi. V PHP žádné speciální funkce pro práci s binárními ani textovými daty nejsou. Jediné, co mě napadá, není potřeba třebas poslat nějakou hlavičku, či nastavit nějakou cookie, aby byl vrácen správný obsah? Odesílané i přijímané hlavičky jde sledovat v prohlížeči (pro Firefox je na to už něvím jaké rozšíření, možná, že by to mohlo být ve Firebugu). |
||
| karlanka Profil * |
#5 · Zasláno: 28. 4. 2008, 19:23:44
Když tu adresu zadám přímo v prohlížeči, tak je výstupem klasické XML.
|
||
| nightfish Profil |
#6 · Zasláno: 28. 4. 2008, 19:42:38
nejedná se třeba o gzip kompresi? (prohlížeč ji může transparentně dekódovat, ale skript to pochopitelně nedělá)
|
||
| starenka Profil * |
#7 · Zasláno: 29. 4. 2008, 01:57:26
na content-type uz jsem se ptal, ale odpovedi se mi nedostalo... pokud je to gzip, staco jeste do curlu prihodit jeste
curl_setopt ($ch, CURLOPT_ENCODING, 'gzip'); tedy cele: private static function grab_url($url)
{
$content = "";
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_ENCODING, 'gzip');
$content = curl_exec ($ch);
curl_close ($ch);
return($content);
}
spolu s content-typem by to melo bejt imho uz neprustrelny |
||
| Mike8748 Profil |
#8 · Zasláno: 29. 4. 2008, 08:46:59
co takhle si danou url otevrit ve firefoxu,a pomoci LiveHTTPHeaders, nebo WebDeveloperToolbar pluginu se podivat na HTTP hlavicky, a z tech si zjistit v cem se nacitani prohlizece lisi od tveho? + zjistis jestli to opravdu pouziva gzip + dalsi veci
PS: mozna by nebylo od veci prozradit url, aby se na to mohl podivat nekdo "chytrejsi" a pomoct ti (teda pokud ta url neni neco fakt tajnyho, treba spisy FBI :) ) |
||
|
Časová prodleva: 17 let
|
|||
0