Avatar billede steen-h Mester
17. april 2008 - 18:40 Der er 4 kommentarer og
1 løsning

simplexml_load_file, med mellemrum

Hej

Jeg har problemer med geocode med google maps.

$address = $row["adress"].
" ".$row["number"].",".$row["postcode"].
" ".$row["city"].",".$row["country"];

$request_url = $base_url . "&q=" . urlencode($address);
$xml = simplexml_load_file($request_url) or die("url not loading");

Jeg har prøvet at tilføje følgende
$address = utf8_decode($address);

Jeg har fundet ud af at fejlen er mellemrum mellem vejnavn og nummer og mellem post nr og by.

http://maps.google.com/maps/geo?output=xml&key=abcd&q=Understedvej+1%2C9300+S%E6by%2CDanmark:1: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE6 0x62 0x79 0x2C in C:\Programmer\Apache\htdocs\php\gmaps_php5.php on line 34

Warning: simplexml_load_file() [function.simplexml-load-file]: l xmlns="http://earth.google.com/kml/2.0"><Response><name>Understedvej 1,9300 S in C:\Programmer\Apache\htdocs\php\gmaps_php5.php on line 34

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\Programmer\Apache\htdocs\php\gmaps_php5.php on line 34
url not loading

Her er linje 34
$xml = simplexml_load_file($request_url) or die("url not loading");

Hvad gør jeg ?
Avatar billede erikjacobsen Ekspert
17. april 2008 - 18:55 #1
Er det ikke æ-et i Sæby, der ikke er i utf-8?
Avatar billede steen-h Mester
17. april 2008 - 19:06 #2
Det kan du måske have ret i, men hvis jeg fjerner mellemrummet kan adressen ikke findes men det kommer ingen fejl.
Avatar billede erikjacobsen Ekspert
17. april 2008 - 20:34 #3
Det var ikke i forespørgslen jeg mente. Du får formentlig svar tilbage. I det svar er der angivet øverst:

  <?xml version="1.0" encoding="UTF-8"?>

men "æ"-et i Sæby står i iso-8859-1. Svært at tro, men jeg er ikke sikker på at Google har opdaget, der er en verden udenfor USA, eller helt forstår XML.

Måske og muligvis kan man be' om at få et bestemt tegnsæt tilbage.

Vil du se at der kommer et svar, så prøv noget i retning af:

  $xml = file_get_contents($request_url) or die("url not loading");
  print $xml;

"Vis kilde" hvis du vil se XML-en.
Avatar billede steen-h Mester
18. april 2008 - 08:09 #4
Jeg skal bruge:
print_r($xml);

Problemet er ikke Google, men file_get_contents som ikke kan lide danske tegn som du skriver.
Hvis jeg har en adresse med æ får jeg ikke noget tilbage file_get_contents fejler inden den sender noget.

Jeg fandt eksemplet her http://code.google.com/support/bin/answer.py?answer=80200&topic=11364&ctx=sibling

Jeg valgte løsningen med PHP 5 da jeg mente den var mere fremtids sikker, den bruger
simplexml_load_file

Løsningen med PHP 4 har jeg fået til at virke, den bruger file_get_contents, der er ikke problemer med danske tegn.

Men løsningen med file_get_contents er måske ikke dårligere end simplexml_load_file ?
Avatar billede steen-h Mester
03. maj 2008 - 18:04 #5
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester