PHP Seltsames Problem beim Ersetzen eines Strings.

feuerfuchs

Lt. Commander
Registriert
Dez. 2007
Beiträge
1.100
Hi,

habe ein seltsames Problem mit PHP. Ich möchte eine kleines Programm schreiben, wo man eine Startadresse eingeben kann und das Programm berechnet dann mithilfe des Google Maps Routenplaners die Route.

Der folgende Code ist jetzt nicht das Programm, veranschalicht aber das Problem:

Ich habe 2 verschiedene Codes:
1)
<?php

$Adresse = $_GET[Adresse];
$Adresse = str_replace ("ß", "ss", $Adresse);
$Adresse = str_replace ("a", "%C3%9F", $Adresse);
echo $Adresse;
?>

2)
<?php

$Adresse = $_GET[Adresse];
$Adresse = str_replace ("ß", "ss", $Adresse);
$Adresse = str_replace ("a", "%C3%9F", $Adresse);
echo $Adresse;
//echo "<iframe src='http://maps.google.de/maps?f=d&source=s_d&saddr=";
//echo $Adresse;
?>

Man sollte eigentlich meinen, die Codes machen beide das selbe, schließlich unterscheiden sie sich ja nur in einem Kommentar.
Tun sie aber nicht!

Die Datei rufe ich auf mit ?Adresse=

Ausgabe bei Code 1: "%C3%9Fss" - hier funktioniert alles :)
Ausgabe bei Code 2: "%C3%9Fß" - hier wird das "ß" nicht durch "ss" ersetzt :mad:

habe es genauso schon mit ereg_replace probiert.
Weiß jemand, woran das liegt? Danke für eure Hilfe!

MfG feuerfuchs
 
Hab deinen Code gerade getestet und bei mir funktionieren beide!


$Adresse = $_GET['Adresse'];

Aber du solltest Adresse in Hochkommas schreiben!
 
Sind beide PHP-Dateien im gleichen Encoding? Also ASCII, ANSI, UTF, etc.? Öffne sie doch mal im Editor und wähle bei "Speichern unter" unten die Kodierung (UTF) aus. Das ganze machst du mit beiden Dateien und probierst es nochmal.
 
ForestKoepp schrieb:
Vielleicht schliesst du mal das Tag iframe? ;)

Da es ein PHP-Problem ist, hat es mit HTML nichts zu tun.

AndrewPoison schrieb:
Sind beide PHP-Dateien im gleichen Encoding? Also ASCII, ANSI, UTF, etc.? Öffne sie doch mal im Editor und wähle bei "Speichern unter" unten die Kodierung (UTF) aus. Das ganze machst du mit beiden Dateien und probierst es nochmal.

Meinst du mit UTF "UTF-8"?
Habe es probiert, dann kommt bei beiden Dateien "%C3%9F".
 
Naja, wenn es UTF(-8) nicht bringt, kannst du ja mal eine andere Kodierung auswählen. Wichtig ist nur, dass sie bei allen interagierenden Dateien die gleiche ist. Kannst dir garnicht vorstellen was ich wegen dem Kram schon teilweise für Kopfschmerzen bei meinen PHP-Skripten hatte :p
 
Ich weiß ja nicht wie wichtig es Google Maps ist ein ss statt ß zu haben, aber da ß auch direkt bei Google Maps funzt frage ich mal drauf los:

Wie wäre es statt str_replace mit urlencode ? ;)
 
M80331 schrieb:
Ich weiß ja nicht wie wichtig es Google Maps ist ein ss statt ß zu haben

Das geht nur dierekt, wenn du die Adresse per Link aufrufen willst leider nicht

M80331 schrieb:
Wie wäre es statt str_replace mit urlencode ? ;)

Das hat geholfen ;)
Ich habe jetzt mit urlencode umkodiert und dann mit str_replace (was in diesem Fall komischerweise funktioniert) die zeichen in die Google Maps Kodierung kodiert.

Danke für eure Hilfe!
 
feuerfuchs schrieb:
Das geht nur dierekt, wenn du die Adresse per Link aufrufen willst leider nicht
Klar, denn Links bzw. URL dürfen kein ß enthalten, daher gibts ja diese Kodierung.

Freut mich aber dass es jetzt bei dir funktioniert.

Wenn du dich weiter belesen willst:

http://www.selfphp.de/funktionsreferenz/url_funktionen/urlencode.php
und umgekehrt:
http://www.selfphp.de/funktionsreferenz/url_funktionen/urldecode.php

bei Leerzeichen als "+" kodiert statt "%20" nimm:
http://www.selfphp.de/funktionsreferenz/url_funktionen/rawurlencode.php
bzw. umgekehrt:
http://www.selfphp.de/funktionsreferenz/url_funktionen/rawurldecode.php
 
Zurück
Oben