| 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! |
 |

28-07-2010, 20:42
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Variablen aus URL extrahieren
Hallo, ich bin mal wieder aufm holzweg.
Also ich habe software die man online prüfen soll ob es ein update gibt oder nicht.
Die software rugt eine seite auf und übergibt folgende 2 variablen:
PHP-Code:
.../updatecheck.php?prg=Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele
Jetzt dachte ich ich kann mir die 2 variablen schnappen, hab ich auch getan, aber das sieht nicht mehr lesbar aus:
PHP-Code:
echo "<br />".$_GET['prg']; # Programmname%20%C3%A4%C3%B6%C3%BC%C3%9F%20v1.00
echo "<br />".$_GET['ber']; # Spiele
Jetzt hab ich schon mit urldecode und urlencode rumprobiert, aber das wird immer mehr unleserlicher :-(
Wie kann ich diese dt. Umlaute und leerzeichen und alles schön zurückwandeln?
Die 2 Variablen sollen klar lesbar sein. Ich weiß jetzt nicht was da für andere komische zeichen übertragen werden wenn die software zB auf einem russischen rechner läuft.
|

28-07-2010, 20:59
|
|
sili
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 115
|
|
Was kommt denn raus, wenn du urldecode() verwendest?
|

28-07-2010, 22:05
|
|
derHund
PHP Master
|
|
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
|
|
Das erinnert mich an einen alten Schnipsel:
PHP-Code:
private function __unicodeToUtf8($string) { $string = str_replace('%C4', '%C3%84', $string); $string = str_replace('%D6', '%C3%96', $string); $string = str_replace('%DC', '%C3%9C', $string); $string = str_replace('%E4', '%C3%A4', $string); $string = str_replace('%F6', '%C3%B6', $string); $string = str_replace('%FC', '%C3%BC', $string); return $string; }
%C3%A4 entspricht %E4, %C3%B6 entspricht %F6 usw.
Die Ein-Byte-Werte kannst du anschließend mit urldecode() weiterverwenden ... ob es eleganter geht, weiss ich nicht, die Funtion gammelt schon geraume Zeit hier rum und hofft auf Besserung. Ich wollte dir lediglich die Richtung zeigen. ach ja, u.U. musst du die Richtung ändern, bevor die Frage kommt.
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ...
|

28-07-2010, 22:42
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.212
|
|
Zitat:
Zitat von RamonaS
Also ich habe software die man online prüfen soll ob es ein update gibt oder nicht.
Die software rugt eine seite auf und übergibt folgende 2 variablen:
PHP-Code:
.../updatecheck.php?prg=Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele
|
Die Software kodiert die Parameter doppelt. Komplett schwachsinnig. Kann man ihr das nicht austreiben?
|

28-07-2010, 23:31
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
Zitat von h3ll
Die Software kodiert die Parameter doppelt. Komplett schwachsinnig. Kann man ihr das nicht austreiben?
|
Der Software das austriben? Ähmm ok ich bin dafür :-)
Aber die kodiert nichts, das ist der code der der die webseite aufruft und beinhaltet dann auch die parameter:
PHP-Code:
Case 1: ShellExecute Me.hwnd, "Open", "http://www.example.com/updatecheck.php?prg=" & appName & "&ber=Spiele", "", "", 1 Webseite im Standard-Webbrowser aufrufen
Das ist visualbasic
In appName steht zB Programmname v1.00 drin
...und wenn das auf der webseite ankommt wird bereits das eine leerzeichen durch %20 oder sowas ersetzt....von den umlauten ganz zu schweigen.
Also ich denke nicht das hier was zu ändern wäre.
Ich würde mich da lieber auf die php-seite stürzen...
Der Ansatz von Mitglied "derHund" ist schon mal nicht schlecht....aber das wird ja ein rießen ding wenn ich da alle möglichkeiten durch replace jage!
Warum kan urldecode / urlencode da nicht helfen?
Übrigens die webseite ist NICHT in UTF8 sondern charset=ISO-8859-1 ....wenn das noch wichtig wäre zur info.
|

28-07-2010, 23:38
|
|
sili
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 115
|
|
Zitat:
Zitat von h3ll
Die Software kodiert die Parameter doppelt. Komplett schwachsinnig. Kann man ihr das nicht austreiben?
|
Damit gemeint ist folgendes:
PHP-Code:
<?php
echo urldecode(urldecode('Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00'));
// => Programmname äöüß v1.00
?>
|

28-07-2010, 23:42
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.212
|
|
Zitat:
Zitat von RamonaS
Aber die kodiert nichts, das ist der code der der die webseite aufruft und beinhaltet dann auch die parameter
|
Das ist aber falsch:
Code:
updatecheck.php?prg=Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele
Richtig wäre:
Code:
updatecheck.php?prg=Programmname%20%C3%A4%C3%B6%C3%BC%C3%9F%20v1.00&ber=Spiele
|

29-07-2010, 00:33
|
|
derHund
PHP Master
|
|
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
|
|
Schau dir mal PHP: urldecode - Manual an. Die Funktion decodiert zumindest die Multibyte-Codes richtig, macht also aus
Code:
Programmname%20%C3%A4%C3%B6%C3%BC%C3%9F%20v1.00
Code:
Programmname äöüß v1.00
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ...
|

29-07-2010, 00:37
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
Zitat von sili
Damit gemeint ist folgendes:
PHP-Code:
<?php
echo urldecode(urldecode('Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00'));
// => Programmname äöüß v1.00
?>
|
Hmm bei mir sieht das noch etwas anders aus....des gewirre ist zwar kürzer aber immer noch unlesbar:
PHP-Code:
Ergebnis bei mir:
Programmname äöüß v1.00
|

29-07-2010, 00:41
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
Zitat von h3ll
Das ist aber falsch:
Code:
updatecheck.php?prg=Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele
Richtig wäre:
Code:
updatecheck.php?prg=Programmname%20%C3%A4%C3%B6%C3%BC%C3%9F%20v1.00&ber=Spiele
|
Hmm also da wird "fälschlicherweise" zu jedem sonderzeichen die zahl 25 dazwischengequetscht!
Hmm also der quellcode von visualbasic enthält jetzt nichts verkertes....vielleicht hat das mit microsoft was zu tun...naja auf jedenfall muß das auf der webseite klar lesbar sein :-) sonst kann ich kein mysql mit dem zeigs füttern.
ich frag mal in einem visualb forum nach.
|

29-07-2010, 00:42
|
|
sili
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 115
|
|
Zitat:
Zitat von RamonaS
Hmm bei mir sieht das noch etwas anders aus....des gewirre ist zwar kürzer aber immer noch unlesbar:
PHP-Code:
Ergebnis bei mir:
Programmname äöüß v1.00
|
Das liegt an deinem Encoding, verwende besser ausschliesslich UTF-8.
|

29-07-2010, 00:50
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.212
|
|
Zitat:
Zitat von RamonaS
Hmm also der quellcode von visualbasic enthält jetzt nichts verkertes....vielleicht hat das mit microsoft was zu tun...
|
Ich vermute eher, dass der Programmierer gepfuscht hat.
|

29-07-2010, 02:20
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
An alle Lesende
Ich habe das jetzt so gelößt:
In meiner Adressleiste des Browser gebe ich nun folgendes ein:
PHP-Code:
http://localhost/software/updatecheck.php?prg=Programmname%2520%25C3%25A4
%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele
und damit sieht das perfekt aus:
PHP-Code:
$prg=urldecode(trim($_GET['prg']));
$prg=urldecode($prg);
$prg=utf8_decode($prg);
echo "<br />prg=".$prg;
$ber=urldecode(trim($_GET['ber']));
$ber=urldecode($ber);
$ber=utf8_decode($ber);
echo "<br />ber=".$ber;
Jetzt wollte ich euch fragen, ob das auch so bleibt!?
Oder ob eventuell die Umlaute anders kodiert an die webseite ankommen, wenn der programmbenutzer zB in russland ist und sein winxp kyrilischer zeichensatz geladen hat.
|

29-07-2010, 15:49
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.455
|
|
Zitat:
Zitat von RamonaS
Jetzt wollte ich euch fragen, ob das auch so bleibt!?
|
Hoffentlich nicht, denn wie schon mehrfach angesprochen wurde, ist die doppelte URL-Kodierung falsch und redundant.
Zitat:
|
Oder ob eventuell die Umlaute anders kodiert an die webseite ankommen, wenn der programmbenutzer zB in russland ist und sein winxp kyrilischer zeichensatz geladen hat.
|
Wenn du die Parameter schon korrekt kodiert (korrekt wäre ein mal!) in den URL einbaust, dann gibt es darin schon gar keine „Umlaute“ mehr, sondern die Adresse ist bereits komplett ASCII-kompatibel.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

30-07-2010, 23:58
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
Zitat von wahsaga
Hoffentlich nicht, denn wie schon mehrfach angesprochen wurde, ist die doppelte URL-Kodierung falsch und redundant.
Wenn du die Parameter schon korrekt kodiert (korrekt wäre ein mal!) in den URL einbaust, dann gibt es darin schon gar keine „Umlaute“ mehr, sondern die Adresse ist bereits komplett ASCII-kompatibel.
|
Ok das hat sich jetzt entgültig erledigt....ich konnte den programmierer überzeugen, seine ganze software abzuändern...jetzt werden keine sonderzeichen mehr verwendet und leerzeichen werden mit unterstrich ersetzt....so sollte es zu keinen kodierungen mehr kommen.
|
|
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
|