| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

21-06-2009, 03:37
|
|
Cloudskipper
Registrierter Benutzer
|
|
Registriert seit: Jul 2005
Ort: Hamburg
Beiträge: 5
|
|
XML Link mit PHP auslesen
Hallo,
ja ich weiß wenn man Topictitel liest könnte man sich denken, wieso sucht der junge nicht einfach mal ne runde bei Google.
Das habe ich aber schon getan und habe irgendwie nix vernünftiges für mein Problem gefunden.
Also um das Verständnis für mein Problem zu erleichtern ein paar Erklärungen, ich möchte für ein Browsergame eine Art Galaxytool erstellen. Mit dem Galaxytool sollen Spionageberichte welche in XML erstellt wurden, ausgelesen und verarbeitet werden so das wichtige Inhalte später über Frontend/ Datenbank abgerufen werden können.
Aber alle Seiten die sich mit damit befassen XML Daten per PHP auszulesen beziehen sich auf eine vorhandene XML Datei wie z.b. bei dem Skript hier:
PHP-Code:
<?php
if (file_exists('artikel.xml')) {
$xml = simplexml_load_file('artikel.xml');
echo $xml->teaser[0];
} else {
exit('Konnte Datei nicht laden.');
}
?>
Mein Problem ist aber das die XML Daten nicht als Datei sondern nur als link zur Verfügung steht wie z.B. => http://report.fatal-vortex.de/report...f7c98.82599507
also wenn jemand eine Idee hat wie ich an die XML Daten komme währe ich sehr dankbar.
Grüsse Cloudskipper
Sollte dieses Problem schonmal aufgetaucht sein tut es mir leid, meine Board und Websuche hat mir leider keine Ergebnisse gebracht.
|

21-06-2009, 08:28
|
 |
mermshaus
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 165
|
|
file_exists() kannst du nicht über das HTTP-Protokoll verwenden. Prüf einfach, ob simplexml_load_file kein richtiges Objekt oder false zurückgibt.
Gruß Marc
PS: Dein Link wird nicht als XML zurückgegeben. Das macht vermutlich nichts aus, aber ein header('Content-type: application/xml'); oder so könnte helfen.
Geändert von mermshaus (21-06-2009 um 08:34 Uhr)
|

27-06-2009, 10:12
|
|
mkb_webprint
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 53
|
|
Hallo Cloudskipper,
PHP: simplexml_load_file - Manual , schau da mal in die Parameterliste rein ;-) Der erste Parameter filename.
PHP-Code:
<?php if ($xml = simplexml_load_file(rawurlencode('http://www.adresse.de/deiner/datei.xml')) { print_r($xml); } else { exit('Konnte Datei nicht öffnen.'); } ?>
So sollte es funzen ;-) rawurlencode brauchst du aber seit PHP 5.1.0 nicht, da macht es das von alleine. Du brauchst das auch nur wenn du Parameter übergibst. Zum Beispiel, wenn du ein PHP-Script aufrufst, das dynamisch eine XML-Datei erstellt. Bei weiteren Fragen kannst du mich gerne ansprechen.
Geändert von mkb_webprint (27-06-2009 um 10:19 Uhr)
|

27-06-2009, 14:11
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Zitat:
Zitat von mkb_webprint
rawurlencode brauchst du aber seit PHP 5.1.0 nicht, da macht es das von alleine.
|
Es ist in der von dir gezeigten Form sowieso unsinnig.
Das macht aus der Adresse nämlich http%3A%2F%2Fwww.adresse.de%2Fdeiner%2Fdatei.xml, und so lässt die sich nicht mehr öffnen.
Zitat:
|
Du brauchst das auch nur wenn du Parameter übergibst.
|
Korrektur: Das wendet man, wenn überhaupt, nur auf einzelne Path- bzw. Querystring-Bestandteile an.
http%3A%2F%2Fwww.adresse.de%2Fdeiner%2Fdatei.xml wäre nur dann sinnvoll, wenn das selbst einen URL-Parameterwert darstellen soll.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

30-06-2009, 16:20
|
|
|
Ich mach das immer über curl
PHP-Code:
$ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_ENCODING,'gzip'); if((ini_get('open_basedir') == '') && (ini_get('safe_mode') == 'Off')) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_FAILONERROR, 1); $data=@curl_exec($ch); if ($data==false) return ''; $xml = new SimpleXMLElement($data);
usw. usw.
|

01-07-2009, 15:29
|
|
Slava
PHP Senior
|
|
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.583
|
|
curl ist einfach zu viel schreib arbeit.
wenn curl da ist, dann muss auch allowurlopen (php.ini) längst eingeschaltet sein.
PHP-Code:
$xml = simplexml_load_string(file_get_contents($url));
|

01-07-2009, 15:38
|
|
|
Zitat:
Zitat von Slava
curl ist einfach zu viel schreib arbeit.
wenn curl da ist, dann muss auch allowurlopen (php.ini) längst eingeschaltet sein
|
1. Nö die paar Kümmerzeilen - und hat Vorteile
2. das gilt auch für fopen und file_get_contents .
|

02-07-2009, 11:54
|
|
PuP
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 9
|
|
Wozu file_get_contents() dann kann er die Url auch dierekt in simplexml_load_file($url) packen. Und wenn allowurlopen off ist mit fsockopen versuchen die Quelle zu holen (kann aber auch deaktiviert sein, manche Hoster sind das sehr Konsequent).
|

02-07-2009, 11:59
|
|
PuP
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 9
|
|
Zitat:
Zitat von mkb_webprint
Hallo Cloudskipper,
PHP: simplexml_load_file - Manual , schau da mal in die Parameterliste rein ;-) Der erste Parameter filename.
PHP-Code:
<?php if ($xml = simplexml_load_file(rawurlencode('http://www.adresse.de/deiner/datei.xml')) { print_r($xml); } else { exit('Konnte Datei nicht öffnen.'); } ?>
So sollte es funzen ;-) rawurlencode brauchst du aber seit PHP 5.1.0 nicht, da macht es das von alleine. Du brauchst das auch nur wenn du Parameter übergibst. Zum Beispiel, wenn du ein PHP-Script aufrufst, das dynamisch eine XML-Datei erstellt. Bei weiteren Fragen kannst du mich gerne ansprechen.
|
Bei manchen Providern läuft eine PHP5 Version mit Einstellungen wo keine Parameter mehr erlaubt sind bei simple_load_file() ; fopen() etc.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|