The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Url - URL Klasse

BASE CLASS

Quiq::Object

METHODS

Klassenmethoden

encode() - Kodiere Zeichenkette

Synopsis

  $encStr = $class->encode($str);
  $encStr = $class->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 = $class->decode($encStr);
  $str = $class->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 = $class->queryEncode(@opt,@keyVal);
  $queryStr = $class->queryEncode($initialChar,@opt,@keyVal);

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 = $class->queryDecode($queryStr);
  @arr | $arr = $class->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) =
      $class->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.174

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2020 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.