Xml lehívási távoli gépről és elemzése
Üdv!
Lenne egy ksi gondom xml kezeléssel kapcsolatban:
itt a php kód egy része:
és az a bajom hogy a szerver átad egy ilyen paramétert mikor lehívom
a stats.xml-t
HTTP/1.1 200 OK
Server: WoWEmu
Connection: Close
Content-length: 7601
Content-type: text/xml
nos ez eddig ok is, ezt meg próbálom kiszedni a preg_replace-val,
de a \n vagy is az üres sorok bennmaradnak és így sajnos nem elemzni...Szerintetek hogy tudnám elérni hogy elemezze?
vagy pedig kivenni azt az infót amit a szerver küld?
Előre is kösszönöm...
■ Lenne egy ksi gondom xml kezeléssel kapcsolatban:
itt a php kód egy része:
és az a bajom hogy a szerver átad egy ilyen paramétert mikor lehívom
a stats.xml-t
HTTP/1.1 200 OK
Server: WoWEmu
Connection: Close
Content-length: 7601
Content-type: text/xml
nos ez eddig ok is, ezt meg próbálom kiszedni a preg_replace-val,
de a \n vagy is az üres sorok bennmaradnak és így sajnos nem elemzni...
- <?php
- $server = "169.254.201.102";
- $f = @fsockopen($server, 8080, $err, $errstr, 5);
- $query = "GET /stats.xml\r\n";
- $query .= "Host: www.php.net\r\n\r\n";
- function abc() {
- global $f;
- global $b;
- while ($lap = fgets($f, 1024)) {
- $b .= $lap;
- }
- }
- if ($f) {
- fwrite($f, $query);
- abc();
- $c = NULL;
- $b = preg_replace("/Server([ a-zA-Z0-9\.\:]*)/", $c, $b);
- $b = preg_replace("/HTTP\/([ a-zA-Z0-9\.\:]*)/", $c, $b);
- $b = preg_replace("/Connection([ a-zA-Z0-9\.\:]*)/", $c, $b);
- $b = preg_replace("/Content-length([ a-zA-Z0-9\.\:]*)/", $c, $b);
- $b = preg_replace("/Content-type([ a-zA-Z0-9\.\:\/]*)/", $c, $b);
- }
- $parser = xml_parser_create();
- xml_set_element_handler($parser, "start_tag", "end_tag");
- xml_set_character_data_handler($parser, "chd_tag");
- xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
- print $xmla = $b;
- $xml = $xmla;
- xml_parse($parser, $xml);
- /* .... */
- ?>
vagy pedig kivenni azt az infót amit a szerver küld?
Előre is kösszönöm...
CURL
a CURL nem volna jobb erre?
Beállítod neki, hogy nem akarsz a response -ban http headert visszakapni és le van a gond róla.... ;-)
két sorvége=üres sor
Úgy látom, hogy kitörlöd a nem kellő sorokat. Tehát:
1.) esetleg ha fix számú sort törölsz, akkor nem kell preg_replace, hanem számlálóval számolod, hogy mennyitől kezdve van értelmes anyagod.
2.) ha így üres sort állítasz be, akkor a két egymásutáni sorgéve egyre cserélése meg azt eredményezi, hogy egy üres sort kitörölsz ;-)
3.) vagy úgy nézem, hogy a stream-get_line az sorvége-jel nélkül szedi a sorokat, szóval: szeded ezzel és $b .= $lap; helyett $b .= $lap."\r\n"; (ha \r\n a sorvége), így meg eleve nem is lesz üres sorod, mert amit visszakap, az egy nullahosszú string, az meg egy nagy semmise :)
Mindenesetre, ha a $b tekintélyes méretű, akkor IMHO erőforráspazarlás egy regexpet ráeresztni, nemhogy 5-öt...
Remélem, tudtam segíteni :o)