A dolog valahogy úgy kezdődött, hogy kezdett idegesíteni a Sage. A problémám az volt, hogy több gépen is olvasgatom a feedjeimet és zavart, hogy amit az egyiken már megjelöltem olvasottnak, az ugye a másikon még olvasatlanként szerepelt. Gondoltam készítek egy kis oldalacskát magamnak, amin majd online olvasgathatom a feedeket és akkor nincs ilyen probléma. Mostanság úgy is divat mindennel a webre költözni.

Első próbálkozásom a fapados fsockopen() volt, amiről rövid időn belül meg kellett győződnöm, hogy a http protokoll alaposabb ismerete nélkül több problémát okoz, mint amennyit megold. Az addig még rendben lett volna, hogy az elejéről el kell hagyni a header-eket, de néha a headereket záró üres sor után is volt még egy - a tartalomba nem bele illő - szám, sőt sikerült olyan feedet is találnom, ahol a végén is volt valami szám. Kezdett a kód elég csúnyácskává válni, amikor megtaláltam a PHP cURL kiterjesztését, amit pont az ilyen lámáknak találtak ki, mint én.

A dolog rettentően egyszerű. Ezt a kis kódcsomagot arra találták ki, hogy megkönnyítse az életünk ha http, ftp, még-sok-minden-más protokollal kényszerülünk dolgozni. Tehát a sok feltétellel és kivétellel és miazmással telitűzdelt kód leegyszerüsödött ilyen szépre:

$conn = curl_init($url);
curl_setopt($conn, CURLOPT_HEADER, false);
curl_setopt($conn, CURLOPT_RETURNTRANSFER, true);
 
$feed = curl_exec($conn);
 
curl_close($conn);
 
$xml = DOMDocument::loadXML(trim($feed));

Egyszerű és nagyszerű. Nyitunk egy új kapcsolatot, megmondjuk, hogy nem kérünk header-eket, viszont az eredményt azt adja vissza és ne rögtön a képernyőre írja, megszerezzük az eredményeket és csinálunk belőle egy DOMDocument-et. Remélem mindenkinek megjött az étvágya, kellemes játszadozást.

+++++

Hozzászólások Hozzászólások RSS

  1. Bazé, na most csinálok egy phpinfót, hátha én is le tudok egyszerűsödni ennyire.

  2. jah ide csak még annyit, hogy azok a "valamilyen számok a tartalom előtt és után" a

    Content-Type: multipart/mixed ;boundary="[ide jön a számod]"

    fejléc eredménye ..

    http://en.wikipedia.org/wiki/Content-type#Multipart_Messages

    és tudom, hogy hülye dolog fél éves posztokat kommentálni :D

  3. Soha sem késő... :)

Szólj hozzá!

regisztráció, bejelentkezés

Az oldalon nem jelenik meg.

Ezeket a tageket használhatod: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>