NAME
Quiq::Url - URL Klasse
BASE CLASS
METHODS
Klassenmethoden
encode() - Kodiere Zeichenkette
Synopsis
$encStr = $class->encode($str);
Description
Kodiere die Zeichenkette $str nach MIME-Type "application/x-www-form-urlencoded" und liefere die resultierende Zeichenkette zurück.
In der Zeichenkette werden alle Zeichen außer
* - . _ 0-9 A-Z a-z
durch
%xx
ersetzt, wobei xx dem Hexadezimalwert des Zeichens entspricht.
decode() - Dekodiere Zeichenkette
Synopsis
$str = $class->decode($encStr);
Description
Dekodiere die "application/x-www-form-urlencoded" codierte Zeichenkette $encStr und liefere die resultierende Zeichenkette zurück.
queryEncode() - Kodiere URL-Querystring
Synopsis
$queryStr = $class->queryEncode(@opt,@keyVal);
$queryStr = $class->queryEncode($initialChar,@opt,@keyVal);
Options
- -null => $bool (Default: 0)
-
Kodiere auch Schlüssel/Wert-Paare mit leerem Wert (undef oder ''). Per Default werden diese weggelassen.
- -separator => $char (Default: ';')
-
Verwende $char als Trennzeichen zwischen den Schlüssel/Wert-Paaren. Mögliche Werte sind ';' und '&'.
Description
Kodiere die Schlüssel/Wert-Paare in @keyVal gemäß MIME-Type "application/x-www-form-urlencoded" und füge sie zu einem Query String zusammen.
Examples
Querystring mit Semikolon als Trennzeichen:
$str = Quiq::Url->queryEncode(a=>1,b=>2,c=>3);
=>
a=1;b=2;c=3
Querystring mit Kaufmannsund als Trennzeichen:
$url .= Quiq::Url->queryEncode(-separator=>'&',d=>4,e=>5);
=>
?a=1&b=2&c=3&d=4,e=5
Querystring mit einleitendem Fragezeichen:
$url = Quiq::Url->queryEncode('?',a=>1,b=>2,c=>3);
=>
?a=1;b=2;c=3
Details
Als Trennzeichen zwischen den Paaren wird per Default ein Semikolon (;) verwendet:
key1=val1;key2=val2;...;keyN=valN
Ist der erste Parameter ein Fragezeichen (?), Semikolon (;) oder Kaufmannsund (&), wird dieses dem Query String vorangestellt:
?key1=val1;key2=val2;...;keyN=valN
Das Fragezeichen ist für die URL-Generierung nützlich, das Semikolon und das Kaufmannsund für die Konkatenation von Querystrings.
Ist der Wert eines Schlüssels eine Arrayreferenz, wird für jedes Arrayelement ein eigenes Schlüssel/Wert-Paar erzeugt:
a=>[1,2,3]
wird zu
a=1;a=2;a=3
queryDecode() - Dekodiere URL-Querystring
Synopsis
@arr | $arr = $class->queryDecode($queryStr);
Description
Dekodiere den Querystring $queryStr und liefere die resultierende Liste von Schlüssel/Wert-Paaren zurück. Im Skalarkontext liefere eine Referenz auf die Liste.
Die Schlüssel/Wert-Paare können per & oder ; getrennt sein.
split() - Zerlege URL in seine Bestandteile
Synopsis
($schema,$user,$passw,$host,$port,$path,$query,$fragment,@opt) =
$class->split($url);
Options
- -defaultSchema => $schema (Default: undef)
-
Füge Defaultschema hinzu, wenn keins angegeben ist. Beispiel: -defaultSchema=>'http://'
- -debug => $bool (Default: 0)
-
Gib die Zerlegung auf STDOUT aus.
Description
Zerlege den URL $url in seine Komponenten und liefere diese zurück. Für eine Komponente, die nicht im URL enthalten ist, wird ein Leerstring ('') geliefert.
Ein vollständiger URL hat die Form:
schema://[user[:passw]@]host[:port]/[path][?query][#fragment]
------ ---- ----- ---- ---- ---- ----- --------
1 2 3 4 5 6 7 8
1 = Schema (http, ftp, ...)
2 = Benutzername
3 = Passwort
4 = Hostname (kann auch IP-Adresse sein)
5 = Port
6 = Pfad (Gesamtpfad, evtl. einschließlich Pathinfo)
7 = Querystring
8 = Searchstring (wird nicht an den Server übermittelt)
Die Funktion akzeptiert auch unvollständige HTTP URLs:
http://host.domain
http://host.domain:port/
http://host.domain:port/this/is/a/path
/this/is/a/path?arg1=val1&arg2=val2&arg3=val3#text
is/a/path?arg1=val1&arg2=val2&arg3=val3
path?arg1=val1&arg2=val2&arg3=val3
?arg1=val1&arg2=val2&arg3=val3
Der Querystring ist alles zwischen '?' und '#', der konkrete Aufbau, wie Trennzeichen usw., spielt keine Rolle.
VERSION
1.140
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2019 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.