Quiq::Url - Operationen im Zusammenhang mit URLs
Quiq::Object
Die Klasse definiert Operationen, die im Zusammenhang mit URLs nützlich sind.
$u = $class->new;
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.
$url = $this->href($baseUrl,@keyVal);
(String) URL bis zum Query-String (ohne Fragezeichen)
Liste der Query-String Parameter
String
Erzeuge einen URL der Form $baseUrl?<querystring> und liefere diesen zurück.
$baseUrl?<querystring>
$encStr = $this->encode($str); $encStr = $this->encode($str,$encoding);
Die Zeichenkette, die kodiert wird.
Das Encoding, in dem die Zeichenkette encodiert werden soll.
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.
$str = $this->decode($encStr); $str = $this->decode($encStr,$encoding);
Die Zeichenkette, die dekodiert wird.
Das Encoding, in dem die Zeichenkette encodiert ist.
Dekodiere die "application/x-www-form-urlencoded" codierte Zeichenkette $encStr und liefere die resultierende Zeichenkette zurück.
$queryStr = $this->queryEncode(@opt,@keyVal); $queryStr = $this->queryEncode($initialChar,@opt,@keyVal);
qE()
Liste der Schlüssel/Wert-Paare, die URL-kodiert werden sollen.
Zeichen, das der URL-Kodierten Zeichenkette vorangestellt werden soll. Dies ist, wenn bentigt, typischweise ein Fragezeichen (?).
Kodiere auch Schlüssel/Wert-Paare mit leerem Wert (undef oder ''). Per Default werden diese weggelassen.
Verwende $char als Trennzeichen zwischen den Schlüssel/Wert-Paaren. Mögliche Werte sind '&' und ';'.
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.
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
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
@arr | $arr = $this->queryDecode($queryStr); @arr | $arr = $this->queryDecode($queryStr,$encoding);
Querystring, der dekodiert werden soll.
Das Encoding, in dem der Querystring encodiert ist.
Liste der dekodierten Schüssel/Wert-Paare. Im Skalarkontext eine Referenz auf die Liste.
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.
($schema,$user,$passw,$host,$port,$path,$query,$fragment,@opt) = $this->split($url);
Füge Defaultschema hinzu, falls keins angegeben ist. Beispiel: -defaultSchema=>'http://'
Gib die Zerlegung auf STDOUT aus.
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.
1.208
Frank Seitz, http://fseitz.de/
Copyright (C) 2023 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.