NAME
Quiq::Url - Operationen im Zusammenhang mit URLs
BASE CLASS
DESCRIPTION
Die Klasse definiert Operationen, die im Zusammenhang mit URLs nützlich sind.
METHODS
Konstruktor
new() - Instantiiere Objekt
Synopsis
$u = $class->new;
Description
Instantiiere ein Objekt der Klasse und liefere eine Referenz auf dieses Objekt zurück. Da die Klasse ausschließlich Klassenmethoden enthält, hat das Objekt ausschließlich die Funktion, eine abkürzende Aufrufschreibweise zu ermöglichen.
Klassenmethoden
href() - Erzeuge URL
Synopsis
$url = $this->href($baseUrl,@keyVal);
Arguments
- $baseUrl
-
(String) URL bis zum Query-String (ohne Fragezeichen)
- @keyVal
-
Liste der Query-String Parameter
Returns
String
Description
Erzeuge einen URL der Form $baseUrl?<querystring>
und liefere diesen zurück.
encode() - Kodiere Zeichenkette
Synopsis
$encStr = $this->encode($str);
$encStr = $this->encode($str,$encoding);
Arguments
- $str
-
Die Zeichenkette, die kodiert wird.
- $encoding (Default: 'utf-8')
-
Das Encoding, in dem die Zeichenkette encodiert werden soll.
Returns
String
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 eine Folge von
%xx
ersetzt, wobei die xx dem Hexadezimalwert des betreffenden Bytes im Encoding des Zeichens entspricht.
decode() - Dekodiere Zeichenkette
Synopsis
$str = $this->decode($encStr);
$str = $this->decode($encStr,$encoding);
Arguments
- $str
-
Die Zeichenkette, die dekodiert wird.
- $encoding (Default: 'utf-8')
-
Das Encoding, in dem die Zeichenkette encodiert ist.
Returns
String
Description
Dekodiere die "application/x-www-form-urlencoded" codierte Zeichenkette $encStr und liefere die resultierende Zeichenkette zurück.
queryEncode() - Kodiere Querystring
Synopsis
$queryStr = $this->queryEncode(@opt,@keyVal);
$queryStr = $this->queryEncode($initialChar,@opt,@keyVal);
Alias
qE()
Arguments
- @keyVal
-
Liste der Schlüssel/Wert-Paare, die URL-kodiert werden sollen.
- $initialChar
-
Zeichen, das der URL-Kodierten Zeichenkette vorangestellt werden soll. Dies ist, wenn bentigt, typischweise ein Fragezeichen (?).
Options
- -encoding => $encoding (Default: 'utf-8')
-
Das Encoding, in dem die Zeichenkette encodiert werden soll.
- -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 ';'.
Returns
String
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 Kaufmanns-Und als Trennzeichen:
$url = Quiq::Url->queryEncode(a=>1,b=>2,c=>3);
=>
a=1&b=2&c=3
Querystring mit Semikolon als Trennzeichen:
$url = Quiq::Url->queryEncode(-separator=>';',d=>4,e=>5);
=>
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 Kaufmanns-Und (&) verwendet:
key1=val1&key2=val2&...&keyN=valN
Ist der erste Parameter ein Fragezeichen (?), 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 Kaufmanns-Und 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 Querystring
Synopsis
@arr | $arr = $this->queryDecode($queryStr);
@arr | $arr = $this->queryDecode($queryStr,$encoding);
Arguments
- $queryStr
-
Querystring, der dekodiert werden soll.
- $encoding (Default: 'utf-8')
-
Das Encoding, in dem der Querystring encodiert ist.
Returns
Liste der dekodierten Schüssel/Wert-Paare. Im Skalarkontext eine Referenz auf die Liste.
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) =
$this->split($url);
Options
- -defaultSchema => $schema (Default: undef)
-
Füge Defaultschema hinzu, falls 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[:password]@]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 nach '?' und ggf. bis '#', falls angegeben. Der konkrete Aufbau des Querystring, wie Trennzeichen usw., spielt keine Rolle.
VERSION
1.222
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.