Autor Zpráva
karlanka
Profil *
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 *
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 *
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
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 *
Když tu adresu zadám přímo v prohlížeči, tak je výstupem klasické XML.
nightfish
Profil
nejedná se třeba o gzip kompresi? (prohlížeč ji může transparentně dekódovat, ale skript to pochopitelně nedělá)
starenka
Profil *
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
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 :) )

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: