| XML Hier passt alles rein, was das Thema XML (XSLT, etc...) betrifft, auch in Verbindung mit PHP |
 |
|

27-06-2007, 14:36
|
|
Borstilein
Newbie
|
|
Registriert seit: Jun 2007
Beiträge: 9
|
|
google maps
Hi,
ich versuche mittels maps.google.com zu adressen aus meiner datenbank die dazugehörigen koordinaten zu ermitteln. Das funktioniert auch soweit, solange ich keine Sonderzeichen wie z.B ü,ä,ß verwende. Dann bekomme ich folgenden Fehler
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\htdocs\umkreissuche\googletest.php:12 Stack trace: #0 C:\htdocs\umkreissuche\googletest.php(12): SimpleXMLElement->__construct('<?xml version="...') #1 {main} thrown in C:\htdocs\umkreissuche\googletest.php on line 12
Hier ist der dazugehörige code:
$adress = array($street, $post, $city);
// Searchstring erstellen
$searchFor = implode ('+', $adress);
// Url für google maps Abfrage zusammensetzen
$key = "ABQIAAAAvTxQJ8ofNxPjKQjP5sMvlRQAWm7Akpi9GkyeD5RywzKP8hv10BQ9wPjSO9ptUs7bZ93Gxf2St9eZiQ";
$url = "http://maps.google.com/maps/geo?q=";
$url .= $searchFor;
$url .= "&output=xml&key=$key";
// Abfrage starten
$page = file_get_contents($url);
echo $page;
// Auslesen der Koordinaten von google maps
$xml = new SimpleXMLElement($page); // FEHLER MIT UTF-8 BEI UMLAUTEN WIE ü
$test = $xml->Response->Placemark->Point->coordinates;
Ich hoffe jemand kann mir helfen.
Vielen Dank
Torsten
|

27-06-2007, 15:15
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Re: google maps
Zitat:
Original geschrieben von Borstilein
$xml = new SimpleXMLElement($page); // FEHLER MIT UTF-8 BEI UMLAUTEN WIE ü
|
Dann verwendest du vermutlich kein UTF-8, sondern bildest dir nur ein, es zu tun ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

27-06-2007, 15:54
|
|
Borstilein
Newbie
|
|
Registriert seit: Jun 2007
Beiträge: 9
|
|
Wie kann ich denn überprüfen, ob ich wirklich UTF-8 verwenden, bzw. wie kann ich sicher stellen, dass ich es verwende? bin Anfänger auf diesen Gebiet, sorry.
|

27-06-2007, 16:31
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Speichere dein XML mit einem Editor in UTF-8 kodiert ab.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

27-06-2007, 16:38
|
|
Borstilein
Newbie
|
|
Registriert seit: Jun 2007
Beiträge: 9
|
|
Das xml bekomme ich von google
|

27-06-2007, 16:42
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Original geschrieben von Borstilein
Das xml bekomme ich von google
|
Dann verstehe ich nicht, wo dein Problem liegt - Google liefert doch in UTF-8 kodierte Daten ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

27-06-2007, 16:51
|
|
Borstilein
Newbie
|
|
Registriert seit: Jun 2007
Beiträge: 9
|
|
ja richtig. Dennoch tritt bei der Funktion SimpleXMLElement ein Fehler auf, und zwar nur bei Daten mit ü,ä,ß...
|

27-06-2007, 17:01
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Problem so nicht nachvollziehbar, sorry.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

27-06-2007, 19:07
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
versuche $page explizit nach utf-8 zu kodieren, bevor du es an den konstruktor übergibst.
|

28-06-2007, 09:51
|
|
Borstilein
Newbie
|
|
Registriert seit: Jun 2007
Beiträge: 9
|
|
Hab es mit $page = utf8_encode($page); probiert. Der Fehler tritt jetzt nicht mehr auf, jedoch ist nun $test leer
|

28-06-2007, 10:23
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Oben wurde gesagt, Google liefert UTF-8. Wenn das stimmt, zerstörst du mit deinem erneuten utf8_encode() den String.
Lass dir $page zur Kontrolle mal ausgeben!
|

28-06-2007, 10:56
|
|
Borstilein
Newbie
|
|
Registriert seit: Jun 2007
Beiträge: 9
|
|
das sieht beides mal gleicht aus, habe jetzt herausgefunden, dass $page = file_get_contents($url); schon nicht alles von der url einliest.
Auf der seite zu der url steht :
<kml>
−
<Response>
<name>Hauptstraße 10 91743 Unterschwaningen</name>
−
<Status>
<code>200</code>
<request>geocode</request>
</Status>
−
<Placemark id="p1">
<address>Hauptstraße 10, 91743 Unterschwaningen, Germany</address>
−
<AddressDetails Accuracy="8">
−
<Country>
<CountryNameCode>DE</CountryNameCode>
−
<AdministrativeArea>
<AdministrativeAreaName>Bayern</AdministrativeAreaName>
−
<SubAdministrativeArea>
<SubAdministrativeAreaName>Ansbach</SubAdministrativeAreaName>
−
<Locality>
<LocalityName>Unterschwaningen</LocalityName>
−
<Thoroughfare>
<ThoroughfareName>Hauptstraße 10</ThoroughfareName>
</Thoroughfare>
−
<PostalCode>
<PostalCodeNumber>91743</PostalCodeNumber>
</PostalCode>
</Locality>
</SubAdministrativeArea>
</AdministrativeArea>
</Country>
</AddressDetails>
−
<Point>
<coordinates>10.619770,49.081530,0</coordinates>
</Point>
</Placemark>
</Response>
</kml>
und nach dem Auslesen steht in $page:
<kml>
−
<Response>
<name>Hauptstraße 10 91743 Unterschwaningen</name>
−
<Status>
<code>200</code>
<request>geocode</request>
</Status>
</Response>
</kml>
Geändert von Borstilein (28-06-2007 um 11:16 Uhr)
|

28-06-2007, 11:11
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Re: google maps
Ich vermute mal, deine Inhalte von $adress sind nicht UTF-8 kodiert.
Wenn ich mir die Request-Adresse mal selber zusammenbastle, liefert mir Google für den Request-Parameter ?q=düsseldorf&... im Ergebnis-XML ein Element <name>düsseldorf</name> zurück.
Wenn ich stattdessen ?q=düsseldorf&... verwende, liefert es mir analog <name>düsseldorf</name> zurück ...
Google geht also davon aus, dass die Daten die du lieferst, in UTF-8 kodiert sind - darf es ja wohl auch, wenn du sonst keinerlei Angabe bzgl. Content-Encoding machst - und konvertiert sie deshalb selber nicht mehr; liefert dir also im Ergebnis genau das zurück, was du übergeben hast.
Wenn du jetzt aber kein UTF-8 übergeben hast, bekommst du an der Stelle auch kein UTF-8 zurück - und bei nicht als UTF-8 interpretierbaren Zeichen kracht's dann halt beim Erstellen des SimpleXML-Objektes.
Also: Mal prüfen, ob die Daten in $adress wirklich in UTF-8 vorliegen - und wenn nicht, dafür sorgen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

28-06-2007, 11:24
|
|
Borstilein
Newbie
|
|
Registriert seit: Jun 2007
Beiträge: 9
|
|
google gibts mir richtig zurück, mein Problem ist, dass ich wie oben ergänzt bei xml die ü,ä... enthalten nicht den kompletten string in $page eingelesen bekomme. Sorry, hatte auch erst vorhin bemerkt, dass es nicht an google liegt
|

28-06-2007, 11:51
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Kannst du mal ein Beispiel geben, welche Suchdaten du in die Adresse einfügst, bzw. wie diese Adresse dann aussieht? (Nimm bitte gleich die Originaldaten, die du für das "Unterschwaningen"-Beispiel oben verwendet hast.)
Also
http://maps.google.com/maps/geo?q=was_steht_hier&output=xml&key=***
(Und bitte die Option "URLs automatisch umwandeln" beim Posten abschalten, damit die Forensoftware daran nichts verfälscht.)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|
|
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
|