| Ein Internet-Befehlstext (Adresszeile ihres Browsers) muss festgelegten Regeln folgen und darf nur bestimmte Zeichen enthalten. | Die URI-Syntax ('Grammatik') hat besondere Bedeutung für die Vergabe von Domain-Namen (UTF-5) und für die Codierung von CGI GET-Argumenten. |
Zeichencodes
|
PC-Codes für Buchstaben, Ziffern und Sonderzeichen |
| Decodierung | Live-Beispiel zur Decodierung von Parametern |
| Codierung | Live-Beispiel zur Decodierung von Parametern |
| URL Syntax | Die Grammatik von Web-Resourcen |
| HTTP-URL Syntax | Die Grammatik von Webseiten-Adressen |
| Querystring Syntax | Die Grammatik für die Übergabe von Parametern |
| URI Programmierung | URI-Strings in Programmiersprachen |
| Links |
Ausgewählte
|
HTML-Formular |
|
Formular <form>Das Beispiel rechts zeigt (vereinfacht) den HTML-Quelltext für ein Formular.Das <form>-Element umschließt alle Eingabe-Elemente, Kommentare usw- (hier mit ... symbolisiert). |
HTML-Formular
<form name="f1" method="get" action="uri_decode.php">
... </form> |
Attribut nameJedes Formular sollte normalerweise einen eindeutigen Namen erhalten. Zwecks Kompatibilität mit DOM-Methoden ist es sehr empfehlenswert, auch ein id-Attribut mit dem gleichen Namen einzusetzen. |
Gleich lautende Attribute id und name id="f1" name="f1"
|
Methode (GET oder POST)Zum Übersenden der Daten stehen 2 Methoden zur Verfügung. Die Unterschiede sind für einfache Fälle unerheblich. Wählen sie im Zweifel GET, dann werden die übergebenen Daten in der Browser-Adresszeile der Ziel-Seite angezeigt und lassen sich leichetr debuggen. |
Methoden (entweder - oder):
method="get"
method="post" |
Action = Ziel-AdresseMit dem Attribut action wird die Adresse des Ziels angegeben - normalerweise eine dynamische Webseite.(In Sonderfällen gibt es ganz andere Anwendungen). |
Eine etwas präzisere Definition: Das Ziel ist ein Server-Programm, welches die Daten empfängt, und als Reaktion eine maßgeschneiderte Webseite erzeugt und zurücksendet. Das Programm ist meistens in einer typischen Webserver-Programmiersprache verfasst, z.B. Perl oder PHP. |
| Die von einem HTML-Formular umschlossenen Eingabe-Elemente werden im nächsten Kapitel vorgestellt. |
Jede Webseite kann beliebig viele Formulare enthalten. Jedes <form>-Element
muss lediglich einen eigenen eindeutigen Namen erhalten. Mehr als 1 Formular wird allerdings nur selten eingesetzt. |
Formular Eingabe-Elemente |
|
|
Die hier gezeigten HTML Elemente dienen zur (manuellen) Eingabe von Daten.
Alle Elemente sind optional. Tipp: Bringen sie bei allen Elementen Kommentare und Beschriftungen an, damit ihre BesucherInnen erfahren, welche Daten erwartet werden. |
Alle Eingabe-Elemente müssen sich innerhalb eines <form></form>-Elements befinden. Die enthaltenen Daten werden beim Absenden (submit) des Formulars gemeinsam abgesendet. |
AnordnungDas Beispiel rechts zeigt (vereinfacht) den HTML-Quelltext für ein Formular.Das <form>-Element umschließt alle Eingabe-Elemente und alle dazu gehörenden Beschriftungen und Kommentare. |
HTML-Formular
<form name="f1" method="get" action="uri_decode.php">
<input type="text" name="txt" /> Text<br /> <input type="radio" name="rb1" value="ein" /> ... </form> |
Text-EingabeDieses Element wird am Häufigsten verwendet. Es dient zur Eingabe von beliebigem Text - auch Leerzeichen, Sonderzeichen, Unicode-Zeichen usw.Jedes Text Eingabe Element muss einen eindeutigen Namen (hier txt) erhalten. Dieser Name wird später als Variablen-Name an das Ziel weitergegeben. Der eingetragenen Text wird als Wert der Variablen übergeben. Ein Formular kann beliebig viele Elemente zur Text-Eingabe enthalten. Diese müssen sich lediglich in ihren Namen unterscheiden. |
Element <input> mit Attribut type="text"
<input type="text" name="txt" /> Text
Beispiel:
Wenn sie den Text abc eintragen, werden die Daten dieses
Eingabe-Feldes als txt=abc an das Ziel übergeben.
|
Options-Felder (radio buttons)Dieses Element besteht aus mehreren zusammengehörenden Teilen, von denen jeweils nur einer ausgewählt sein kann. Die Auswahl eines Elements schaltet alle anderen Elemente ab.Alle zusammengehörenden Options-Felder müssen den gleichen Namen erhalten. Jedes Formular kann beliebig viele Gruppen von Options-Feldern enthalten. Jede Gruppe muss andere Namen verwenden. |
Element <input> mit
Attribut type="radio"
<input type="radio" name="rb1" value="ein" /> Ein
<input type="radio" name="rb1" value="aus" /> Aus Beispiel: Wenn sie die Option aus wählen, werden die Daten rb1=aus an das Ziel übergeben. |
Schaltkästchen (checkboxes)Jedes dieser Elemente kann durch Klick ein/aus geschaltet werden, und zwar unabhängig von allen anderen Elementen. Daher muss jede checkbox einen eindeutigen Namen erhalten.Ein Formular sendet nur die Daten markierte Kästchen. |
Element <input> mit
Attribut type="checkbox"
<input type="checkbox" name="cb1" value="rot" />
Beispiel: Wenn sie dieses Kästchen markieren, werden die Daten cb1=rot an das Ziel übergeben. Ansonsten wird die Variable cb1 nicht gesendet. |
|
Weitere Eingabe-Elemente sind z.B. Auswahl-Listen Weitere Attribute erlauben zusätzliche Optionen und vor allem die präzise Formatierung (CSS kann verwendet werden). |
VorbelegungIn der Praxis ist es meist angenehm, wenn jedes Eingabe-Feld bereits mit einem Standard (Vorgabe)-Wert ausgefüllt bzw. markiert ist. In diesem Fall müssen die AnwenderInnen nur die abweichenden Daten ändern. |
| Details zu Eingabe-Elementen bei SelfHTML | |
(Verstecktes) Formular zur Codierung verwenden |
|
JavascriptMan kann Daten mit Javascript aufbereiten und absenden. Dazu braucht man kein HTML-Formular. Allerdings muss man sich selbst um die Codierung der Daten, Zusammenstellung des URI-Textes und das Absenden kümmern. |
Viel bequemer ist es allerdings, für Codierung und Absenden der Daten ein verstecktes Formular zu verwenden. Dieser Trick wird hier gezeigt. |
So kann man Eingabe-Felder verstecken. Das Element funktioniert genauso wie type="text" wird jedoch nicht angezeigt. |
Ein verstecktes Formular-Feld:
<input type="hidden" name="h1">
|
Mit der CSS Eigenschaft display kann man die Anzeige beliebiger Elemente abschalten - auch ganzer Formulare. Das <form> funktioniert genauso wie ein sichtbares Formular. |
So versteckt man ein ganzes Formular mit allen enthaltenen Eingabe-Elementen:
<form style="display:none;">
... </form> |
Formular-Daten eintragenZum automatischen Eintragen von Daten kann Javascript auf jedes Eingabe-Element zugreifen. |
Daten schreiben:
document.f1.txt.value = "Neuer Text"
|
Formular AbsendenSo wird ein Formular mit Javascript abgesendet. |
Absenden eines Formulars mit Javascript:
document.f1.submit();}
|
URI-Regeln |
||||||||||||||||||||||||||||||||||
|
Es gibt verschiedene Möglichkeiten, den Text für die Anforderung einer Webseite
und die darin übergebenen Argumente zu codieren. Hier werden jene Regeln beschrieben, die angewendet werden, wenn ein HTML <form>-Formular mit einem gängigen Browser und der GET-Methode abgesendet wird. |
||||||||||||||||||||||||||||||||||
|
Allgemeine Form:
<scheme>://<user>:<password>@<host>:<port>/<path>?<query>;<argument>=<value>&<argument>=<value>#<fragment>
|
||||||||||||||||||||||||||||||||||
|
Ein URI-String besteht aus folgenden Teilen - jeder Teil ist optional: Adresse - absolut, relativ oder Internet (http://, ftp://, ...) Argumente - Text-String, eingeleitet durch ein ?-Zeichen. Mehrere Argumente werden voneinander durch &-Zeichen getrennt. Jedes Argument besteht aus den Teilen name und wert, getrennt durch = Zeichen. Beispiel: Dieser Argumente-String übergibt die Daten der Variablen txt und zal: ?txt=abc&zal=123
Anker - Text-String, eingeleitet durch ein #-Zeichen.Die Codierung der Zeichen ist leider nicht systematisch, vermutlich aus historischen Gründen. Die 'URI-Maskierung' besteht aus einem %-Zeichen und einem 2stelligen Hexadezimal-Code. URI-Maskierung des Zeichens U+3C (das < Zeichen) erzeugt z.B. den String "%3C". Hier die Codierung der Unicode-Zeichen: Die 32 'nicht-druckbaren ASCII-Steuerzeichen' Zeichen U+00..U+1F werden normalerweise in URI-Strings nicht verwendet. Falls doch, werden sie URI-codiert zu "%00".."%1F". Das ASCII-Sonderzeichen U+20 (blank, Leerzeichen) wird mit einem + Zeichen codiert. Die 16 ASCII-Zeichen U+20..U+2F werden URI-maskiert, mit Ausnahme von U+20 (blank, s.o.); U+2A (*), U+2D (-) und U+2E (.), diese 3 Zeichen werden nicht codiert, sondern im Klartext verwendet. Die 80 ASCII-Zeichen U+30..U+7F (ASCII) werden nicht codiert, sondern im Klartext verwendet, mit Ausnahme von 16 Sonderzeichen, die URI-maskiert werden: U+3A (:), U+3B (;), U+3C (<), U+3D (=), U+3E (>), U+3F (?), U+5B ([), U+5C (\), U+5D (]), U+5E (^), U+60 (`), U+7B ({), U+7C (|), U+7D (}), U+7E (~), U+7F (delete). Die 128 Zeichen U+80..U+FF werden ausnahmslos URI-maskiert zu "%80".."%FF". Die 65280 Zeichen U+0100..U+FFFF werden doppelt codiert: Zuerst wird HTML-codiert, das ergibt "Ā" bis "" Der HTML-Code wird danach URI-maskiert, das ergibt %26 (für &), %23 (für #), eine Dezimalzahl 256..65535 und %3B (für ;), insgesamt die Codes "%26%23256%3B" bis "%26%2365535%3B" Zeichen >U+FFFF können nicht URI-codiert werden bzw. werden von derzeit gängigen Browsern falsch codiert. |
Die Sender-Webseite ist verantwortlich für die korrekte URI-Codierung des URI-Strings.
Dafür gibt es mehrere Möglichkeiten: Die einfachste Möglichkeit ist, ein HTML-Formular zu erstellen. Der Inhalt sämtlicher darin enthaltener Felder wird beim Klicken der Submit-Taste URI-Codiert, so wie links beschrieben. In den Formular-Feldern können alle Unicode-Zeichen verwendet werden. Javascript ermöglicht es, die Argumente zu programmieren. Wenn ein HTML-Formular besteht, dann ist es meistens günstig, die Argument-Daten in die Felder des Formulars zu schreiben und dieses abzusenden. Mit Javascript können programmierbare Argumente auch ohne HTML-Formular versendet werden. In diesem Fall wird der Eigenschaft href des eigenen Fensters oder dem Attribut src eines anderen Fensters ein entsprechend codierter URI-String zugewiesen. |
|||||||||||||||||||||||||||||||||
|
Es ist möglich URI-Strings direkt in HTML-Links zu verwenden.
Damit können fix vorprogrammierte Argumente ohne HTML-Formular versendet werden: <a href="test.htm?txt=abc">abc</a> <a href="test.htm?txt=A+B">A B</a> <a href="test.htm?txt=A%2BB%3CZ%3E">A+B<Z></a> <a href="test.htm?txt=x%3Fy%263">x?y&3</a> <a href="test.htm?txt=%C4%D6%DC">ÄÖÜ</a> <a href="test.htm?txt=%E4%F6%FC%DF">äöüß</a> <a href="test.htm?txt=%26%23945%3B%26%23946%3B%26%23947%3B">αβγ</a> <a href="test.htm?txt=%26%239650%3B%26%239679%3B%26%239632%3B"">▲●■</a> |
||||||||||||||||||||||||||||||||||
Mögliche Werte für <scheme> nach Standard RFC 1738
|
||||||||||||||||||||||||||||||||||
Decodierung - Live Beispiel |
|
| An dieses Script wurden keine Argumente übergeben. | Geben sie im nächsten Absatz einen Text ein und kontrollieren sie Codierung und Decodierung. |
| ▲ Details zur 'Grammatik' des QUERYSTRING (Parameter-Text) finden sie auf dieser Webseite im Absatz 'Querystring Syntax'. | ▲ Details zur Übergabe von Argumenten an PHP-Scripts finden sie in einem eigenen Kapitel dieses Webs. |
URL Syntax - Grammatik von Web-Adressen |
|
|
URL (Uniform Resource Locators) ist die 'alte' Bezeichnung für Texte (Strings) zur Codierung einer Web-Resource, z.B. einer Web-Adresse wie http://pstrainer.topsoft.at. Die URL-Syntax ist in den Standards RFC1738 und RFC1808 festgelegt. |
URI (Uniform Resource Identifiers) ist ein neuer Begriff, der zusätzlich weitere Resourcen ('Names') einschließt. URI ist in der W3C-Definition von CSS2 (Cascading Style Sheets) festgelegt. |
Aufbau:Jede URI besteht aus 3 Teilen <scheme>:<scheme-spefischer Teil> |
Beispiel http://pstrainer.topsoft.at <scheme> = http Doppelpunkt: Spezifischer Teil = //pstrainer.topsoft.at |
<scheme>Für <scheme> sind nur folgende Zeichen erlaubt: 0..9, a..z und die 3 Zeichen +.- |
Die Liste der schemes umfasst derzeit u.a. http, ftp, mailto, news, nntp, file, telnet, gopher, wais, ... |
Scheme-spezifischer TeilFür den spezifischen Teil (unterschiedlich, je nach <scheme>) sind prinzipiell alle druckbaren → ASCII-Zeichen zulässig, also vom Leerzeichen (Code 32.=#20) bis zur Tilde (Code 126.=#7E), nicht jedoch Zeichen >127 wie z.B. äöüß● Jedes Zeichen mit Code 0..255=#00..#FF kann alternativ mit dem Zeichen % und einer 2stelligen Hexadezimalzahl maskiert werden, z.B. %41 für A (Code 64.=#41). ● Unsichere Zeichen: Das Leerzeichen (Code 32.=#20) und die Zeichen <>"#%{}|\^~[] müssen maskiert werden wie oben beschrieben, z.B. %20 für das Leerzeichen. |
● Reservierte Zeichen: Einige Zeichen werden als URL-Steuerzeichen verwendet ;/?:@=& und müssen maskiert werden, z.B. %3F für das Fragezeichen. ● Direkt codierte Zeichen Nach Abzug der Steuerzeichen, unsicheren Zeichen und reservierten Zeichen bleiben nur folgende Zeichen, die 'direkt' in URL-Strings codiert werden können: 0..9, A..Z, a..z und die Zeichen $-_.+!*' ▲ Details zum besonders wichtigen <scheme> HTTP finden sie im nächsten Absatz. |
PfadeDie Angabe von Pfaden erfolgt in der Form <dir>/.../<dir>/<name>, wobei <dir> für ein Verzeichnis steht und <name> für einen Datei-Namen. |
Für jede Stufe 'aufwärts' in einem hierarchischen System wird ../ eingesetzt. |
HTTP-URL Syntax |
|
HTTPEin HTTP-URL hat die allgemeine Form
http://<host>:<port>/<path>?<querystring>#<fragment>
|
|
|
Host
ist eine IP-Adresse oder ein Domain-Name. Der <host>
muss immer angegeben werden, danach wird der gewünschte Server gesucht,
z.B. bei HTTP ein Webserver, bei FTP ein FTP-Server, usw. mit der angegebenen Adresse.
|
Beispiele: |
|
Port:
Der Port (optional) ist eine symbolische Adresse, welche den Datenstrom
innerhalb des Bereichs einer IP-Adresse (des Absender-PC)dirigiert.
Wenn z.B. mehrere Programme ihres PC gleichzeitig mit dem Internet kommunizieren,
dann verwendet jedes dieser Programme einen eigenen Port. Eintreffende Daten-Pakete
werden zum jeweiligen Port, d.h. zum richtigen Programm weitergeleitet.
|
Wenn der <port> nicht angegeben wird, so wird für jedes <scheme> ein Standard-Port angenommen, für HTTP ist das port=80 |
|
Pfad:
Mit dem <path> wird ausgewählt, welches Dokument
der adressierte Server zurücksenden soll. Wenn der <path>
nicht angegeben ist, entscheidet der Server, ob und was zurückgesendet wird.
Bei einem Webserver nennt man jene Webseite, die ohne spezielle Anforderung gesendet wird,
'Homepage'. Die Homepage wird in der Konfiguration des Webservers festgelegt,
bei Apache z.B. mit der Zeile
DirectoryIndex index.html index.html.var index.htm index.php
|
Das Startverzeichnis eines Webs muss eine Datei dieses Namens enthalten. Wenn sie ein Web bei einem Provider publizieren, dann finden sie den Namen der Start-Datei in den Einstellungen bzw. Vorgaben. Meist werden Namen wie index.html oder ähnlich verwendet. |
|
QUERYSTRING:
Wenn das angeforderte Dokument ein Script (z.B. dynamische
Webseite, *.php, *.pl, ...) ist, dann kann man Daten (Parameter)
an das Script-Programm übergeben. Der <querystring>
enthält alle Parameter (Namen und Werte), welche mit der
GET-Methode
an ein Ziel-Script übergeben werden sollen.
|
Für den <querystring> gelten eigene Syntax-Regeln (s.u.). Das trennende Fragezeichen ? fällt weg, wenn kein <querystring> enthalten ist. |
|
Anker:
Ein <fragment> ist ein Link innerhalb
der adressierten Webseite (Anker). Damit kann man Sprungziele an bestimmten
Stellen längerer Webseiten ansteuern.
|
Fast alle Seiten dieses Webs enthalten Anker, z.B. <a name="top"></a> oder <a name="bot"></a> . Das Trennzeichen # fällt weg, wenn kein <fragment> enthalten ist. In diesem Fall zeigt der Browser den Anfang der Webseite. |
|
iDNS: Im Zuge der dringend notwendigen Internationalisierung ist es notwendig, die engen (US)-Zeichen-Grenzen der HTTP-Syntax zu erweitern. Derzeit werden verschiedene Algorithmen (→ UTF-5) diskutiert und bereits teilweise verwendet, um Internationalisierte Domain-Namen (iDNS) zu verwenden. Damit ist es möglich, auch in Europa (lateinische Sonderzeichen, griechische und cyrillische Zeichen) und in asiatischen Bereichen mit nicht-lateinischen Zeichen leicht verständliche Domain-Namen zu verwenden. |
Der kurzfristige Ansatz ist die aufwändige Codierung / Decodierung von 21-Bit Unicode Zeichen in 5-Bit DNS-zulässige Zeichen. So können für Menschen lesbare Domain-Namen verwendet werden, die interne Verarbeitung verwendet weiterhin 'alte' Zeichen. Langfristig sollte besser die gesamte Internet-Kommunikation auf Unicode-Zeichen umgestellt werden. |
QUERYSTRING - Syntax |
|
|
Ein QUERYSTRING enthält Daten (Parameter), welche an
das aufgerufene Script übergeben werden. Damit ist es möglich,
Text-Daten an eine dynamische Webseite (z.B. *.php, *.pl, ... )
zu übergeben. Zahlen werden (in Form von Ziffern) ebenfalls als Texte codiert. Statische Webseiten (*.htm, *.html, ... ) können keine Parameter verarbeiten, die allfällige Übergabe von Daten bleibt in diesem Fall wirkungslos. |
Der QUERYSTRING wird nach den unten angeführten
Regeln codiert und mit einem Trennzeichen ? an die Adresse
der gewünschten Webseite angehängt. ● Alle Parameter-Daten werden als Paare der Form <name>=<wert> dargestellt. ● Mehrere Paare werden voneinander mit je einem Zeichen & getrennt. ● Die maximale Länge des gesamten URL-Strings (inkl. http..) beträgt 1024 Zeichen. |
Regeln für <name>● Ein <name> darf kein Leerzeichen enthalten. |
● Ein <name> muss mit einem Zeichen A..Z,a..z beginnen (nicht mit einer Ziffer 0..9 ). |
Regeln für <wert>● In <wert> enthaltene Leerzeichen werden mit dem Zeichen + oder mit %20 codiert. |
● Sonderzeichen wie &<>/? werden maskiert, z.B. das Fragezeichen ? mit %3F |
|
Beispiel: Die Zuweisung a=123 wird zum <querystring> 'a=123' bzw. in einer URL zu http://test.com/testseite.php?a=123 |
Beispiel: Die beiden Zuweisungen a=12% und b="zwei Worte" werden zum <querystring> a=12%25&b=zwei+Worte |
| Ein wenig bekannter Trick zur URI-Codierung beliebiger → Unicode-Zeichen ist die 'doppelte Maskierung': Zuerst werden Unicode-Zeichen → HTML-maskiert, danach URI-maskiert. |
Beispiel: Aus dem griechischen α wird zuerst der HTML-Code α danach der URI-Code %26%23945%3B |
| ♦ Details zu den Hexadezimal-Codes der ASCII-Zeichen | ▲ Testen sie die Codierung und Decodierung von <querystring> Live mit dem HTML-Formular dieser Seite (s.o.). |
URI-Codierung in Programmiersprachen |
|
| Alle Programmiersprachen, die zur Erstellung dynamischer Webseiten verwendet werden, bieten Funktionen zur Codierung / Decodierung von URI-Strings und /oder zur Decodierung übergebener → CGI-Parameter der Methoden GET und POST. |
♣ Tipp: Verwenden sie im Zweifel bei der Programmierung nur absolute Pfad-Angaben, diese werden von allen Programmiersprachen unterstützt. ♣ Tipp: Verwenden sie alternativ die 'doppelte Maskierung' so wie in den <querystring>-Regeln für <wert> (s.o.) gezeigt. |
Java & JavascriptDie Funktionen sind meist schlecht dokumentiert, daher rechts eine Live-Javascript Tabelle ausgewählter Zeichen.● Zur Codierung / Decodierung stehen diese 3 jeweils symmetrischen Funktions-Paare zur Verfügung: escape - unescape (Spalte esc), encodeURI - decodeURI (Spalte encU), encodeURIComponent - decodeURIComponent (Spalte encUC). ● Alphanumerische Zeichen 0..9, A..Z a..z werden von allen Funktionen unverändert übernommen. ● Die Live-Tabelle zeigt das Verhalten bei → ASCII Sonder- und Steuerzeichen c<128: Bei Maskierung wird ein Hex-Code %XX verwendet. ● Für Zeichen 127<c<256 ( #7F<c<#FF, z.B. Umlaute) wird entweder maskierter → ISO-Code oder maskierter → UTF-8 Code verwendet. ● Für → Unicode-Zeichen 255<c<=65535 (#FF<c<=#FFFF) wird entweder ein HexCode der Form %uXXXX oder maskierter → UTF-8 Code verwendet. Mit den Javascript-Funktionen lassen sich daher alle → Unicode-Zeichen c<=U+FFFF verarbeiten. ● Zeichen c>U+FFFF ergeben ohne Warnung fehlerhafte Codes. |
a = "Test +&.€";
u = escape(a); // u="";
u = encodeURI(a);
// u="";
u = encodeURIComponent(a);
// u="";
|
PHP● Die Funktionen urlencode bzw. urldecode codieren/decodieren einen String nach den Regeln für <querystring>s (Leerzeichen und Sonderzeichen).● Die Funktionen rawurlencode bzw. rawurldecode codieren/decodieren einen String nach URL-Regeln (nur Sonderzeichen). ● Funktion parse_str wird besser nicht verwendet, da sie ein Sicherheits-Risiko darstellt. ● Ab Version 5 steht Funktion http_build_query zur Verfügung. Sie erstellt aus einem Array (hier $qa) aller Parameter direkt den gesamten <querystring> (hier $qs) ● Funktion parse_url zerlegt einen kompletten oder partiellen URL-String in ein Array seiner Bestandteile [scheme, host, port, user, pass, path, query, fragment Die weitere Zerlegung des Pfades erfolgt mit Funktion pathinfo in die Teile [dirname, basename, extension] (hier Array $pa), die Aufarbeitung des <querystring> mit den Funktionen urldecode und preg_split ▲ Details zur Decodierung von Parametern mit PHP. |
$a = "12%";
$b = "2 Worte"; $qs = "a=".urlencode($a)."&b=".urlencode($b); // $qs = "a=12%25&b=2+Worte";
$t = urlencode($qs); // $t = "a=12%&b=2 Worte ";
$qa = array('a'=>'12%', 'b=>'2 Worte'); $qs = http_build_query($qa); // $qs = "a=12%25&b=2+Worte";
$u="http://test.com/dir/path.php?$qs#top"; $ua = parse_url($u);
// $ua['scheme'] = "http";
$pa = pathinfo($ua['path']);// ... // $ua['fragment'] = "top";
// $pa['dirname'] = "/dir";
$qs = urldecode($ua['query']); // $pa['basename'] = "path.php"; // $pa['extension'] = "php"; $qa = preg_split("/&/",$qs);
// $qa[0] = "a=12%";
// $qa[1] = "b=2 Worte"; |
PerlDas Modul URI bietet klar und übersichtlich alle benötigten Funktionen zum Codieren und Decodieren. Die Methoden lesen bzw. schreiben die einzelnen URI-Teile je nach Verwendung.Details im Perl-Manual unter Reference | Modules | URI. |
use URI;
$u = URI->new(); # Codierung:
$u->scheme("http");$u->host("test.com"); $u->path("/dir/path.pl"); $u->query_form(a=>'12%',b=>'2 Worte'); $u->fragment("top"); print "URI-string = ".$u->as_string."\n"; # Decodierung:
print "scheme = ".$u->scheme."\n";print "host = ".$u->host."\n"; print "port = ".$u->port."\n"; print "path = ".$u->path."\n"; print "query = ".$u->query."\n"; print "fragment = ".$u->fragment."\n"; |
|
|
|
W3C -
Naming and Adressing URIs,
CSS2-URL-URI,
Multilingual Forms, IANA - List of URI schemes, URN namespaces, IETF - Internationalized Resource Identifiers (IRIs) RFC 3986, Uniform Resource Identifiers (URI): Generic Syntax RFC 1738, Uniform Resource Locators (URL) RFC 1808, Relative Uniform Resource Locators RFC - RFC1738 (URL, 1994) von Tim Berners-Lee (CERN) et al., RFC1630 (URI, 1994) |
Cheryl & Roy Fielding - URI Generic Syntax von Tim Berners-Lee |
|
Letzte Änderung dieser Seite: 2012-03-02 21:47:11
|