webForumDet fria alternativet

Längden på string varierar mellan webbläsare

PHP

4 svar · 1 057 visningar · startad av casca

Medlem sedan feb. 20005 891 inlägg
Frågan#1

Suttit ett tag nu med följande problem. Har ett PHP-script som tar emot en string i en $_GET-variabel, en adress, och ska passa den till Google Maps Geocoding API för att hämta koordinater.

Så långt inget konstigt! Funkar ypperligt i uppdaterad Firefox, Safari, Chrome, men när jag kommer till IE (just nu testar jag version 9) så ger Google Maps API:et ett felmeddelande som enligt mina eftersökningar oftast beror på att adressen är felformaterad:

{
   "results" : [],
   "status" : "INVALID_REQUEST"
}

Så för att försöka hitta problemet outputtar jag med var_dump() min adress (i sammanslagen sträng) och får följande resultat:

string(100) "http://maps.googleapis.com/maps/api/geocode/json?address=Sveavägen,+Stockholm,+Sverige&sensor=false"

I IE9 får jag däremot liiiite annorlunda svar:

string(99) "http://maps.googleapis.com/maps/api/geocode/json?address=Sveavägen,+Stockholm,+Sverige&sensor=false"

Hur kan det komma sig att samma sträng har olika "längd"? Filens kodning (i editorn) är inställd på UTF-8 som standard. I filens header-funktion är UTF-8 också inställt som charset:

<?php
	header('Content-type: application/json; charset=utf-8');
	header('HTTP/1.1 200 OK');

	// $response är en array med data, från file_get_contents() på url

	echo json_encode($response);
?>

Jag misstänker starkt att det har något att göra med ÅÄÖ eftersom det funkar med adresser utan dessa tecken! ;)

Medlem sedan feb. 20005 891 inlägg
#2

Jag har ingen aning om varför, men när jag refakturerade koden och körde filter_var($str, FILTER_SANITIZE_STRING) så blev plötsligt urlen godkänd och returnerade ett resultatset. Hmm.

Medlem sedan juli 20023 617 inlägg
#3

Intressant.

Medlem sedan juni 2009920 inlägg
#4

En teori är att det kan finnas escape-tecken med i strängen (som \n), vilka man måste rensa bort uttryckligen för att det ska fungera.

Eventuella felskrivningar är telefonens fel!

Medlem sedan juli 2004144 inlägg
#5

Geocoding apiet kan du ju lika gärna köra med php direkt? isf så slipper du eventuella differenser i webläsarna.

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)