PHP/Zeichenkettenverarbeitung

Aus Mikiwiki
< PHP
Wechseln zu: Navigation, Suche

Übersicht Zeichenkettenfunktionen

Funktionen für besondere Zeichen und Zeichenfunktionen
addslashes Setzt einen Backslash ("\", das Escape-Zeichen) vor Sonderzeichen.
addcslashes Fügt Escape-Zeichen beliebigen Zeichen hinzu.
stripcslashes Entfernt Escape-Zeichen von beliebigen Zeichen.
chr Gibt ein zeichen für den angegebenen ASCII-Wert zurück.
ord Gibt den ASCII-Wert eines Zeichens zurück.
Verschlüsselungsfunktionen
crc32 Berechnet die Prüfsumme (ein 32 Bit-Polynom) einer Zeichenkette.
crypt Verschlüsselt eine Zeichenkette nach DES. Für umfangreichere Aufgaben gibt es eine ganze Kryptographiebibliothek, die weit über die Möglichkeiten von "crypt" hinausgeht.
md5 Berechnet die MD5-Zeichenfolge einer Zeichenkette. Dies ist ein Hashwert
md5_file Berechnet die MD5-Zeichenfolge einer Datei. Dies ist ein Hashwert
sha1 Berechnet den Hashwert einer Zeichenkette.
sha1_file Berechnet den Hashwert einer Datei.
HTML- und Webfunktionen
flush Leert den Ausgabepuffer.
get_meta_tags Extrahiert die "<META>"-Tags aus einer Datei.
htmlspecialchars Wandelt in besondere HTML-Symbole um.
htmlentities Wandelt in besondere HTML-Symbole um.
nl2br Wandelt native Zeilenumbrüche in "<br />"-Tags.
quotes_printable_decode Dekodiert Zeichenfolgen, die mit "Quoted printable" kodiert wurden.
quotemeta Setzt einen Backslash vor jedes Sonderzeichen.
rawurldecode Macht eine Zeichenfolge URL-fähig.
rawurlencode Wandelt per URL übergebene Daten wieder in eine Zeichenfolge um.
parse_str Analysiert die Suchzeichenfolge und legt die Parameter in Variablen oder optional in einem Array ab.
get_html_translation_table Gibt ein Array zurück, das die Übersetzungstabelle für HTML-Zeichen enthält.
strip_tags Entfernt HTML- und PHP-Tags.
Aus- und Eingabefunktionen
print Gibt Argumente aus (vergleiche auch "echo").
printf Gibt Argumente formatiert aus.
sprintf Gibt eine formatierte Zeichenkette zurück.
vprintf Arbeitet wie "printf", akzeptiert die Argumente aber als ein Array.
vsprintf Arbeitet wie "sprintf", akzeptiert die Argumente aber als ein Array.
sscanf Erkennt formatierte Zeichen in Eingabezeichenfolgen.
Lokalisierungsfunktionen
localeconv Informationen über die Formatierung.
nl_langinfo Bietet nur Informationen über bestimmte Einstellungen von PHP, die sich auf andere Funktionen auswirken.
setlocale Bestimmt eine sprachliche Lokalisierung. Verschiedene andere Funktionen reagieren darauf.
Arrayspezifische Funktionen
implode
join
Fasst ein Array zu einer Zeichenkette zusammen. "join" ist ein Alias für "implode".
explode Teilt eine Zeichenkette an einem Trennzeichen und gibt die Fragmente als Array zurück.
Reine Zeichenkettenfunktionen
chop Entfernt Leerzeichen am Ende der Zeichenkette.
chunk_split Teilt eine Zeichenkette nach Byte.
convert_cyr_string Wandelt kyrillische Zeichensätze um.
ltrim Entfernt Leerzeichen auf der linken Seite.
strcasecmp Vergleicht zwei Zeichenketten ohne Berücksichtigung von Gross- und Kleinschreibung.
strchr
strstr
Findet das Auftreten eines Zeichens in einer Zeichenkette von der linken Seite her. "strstr" ist ein Alias für "strchr".
strrchr Findet das Auftreten eines Zeichens in einer Zeichenkette von der rechten Seite her.
strcmp Vergleicht zwei Zeichenketten.
strcoll Zeichenkettenvergleich auf der Grundlage sprachspezifischer Informationen.
strcspn Gibt einen Teil einer Zeichenkette zurück, die nicht Zeichen einer zweiten Zeichenkette enthält.
strlen Gibt die Länge einer Zeichenkette zurück.
strrpos Sucht ein Zeichen von der rechten Seite der Zeichenkette her.
strpos Sucht ein Zeichen von der linken Seite der Zeichenkette her.
stripos Sucht ein Zeichen von der linken Seite der Zeichenkette her, wobei die Erkennung von Gross- und Kleinschreibung unterdrückt wird.
strrev Dreht eine Zeichenkette um.
strspn Erkennt Zeichen in einer Zeichenkette und gibt diesen Teil zurück.
strtok Trennt eine Zeichenkette in Teile.
strtolower Wandelt in Kleinbuchstaben um.
strtoupper Wandelt in Grossbuchstaben um.
str_replace Ersetzt Zeichen einer Zeichenkette.
strtr Ersetzt mehrere Zeichen einer Zeichenkette durch mehrere andere.
substr Gibt einen Teil einer Zeichenkette zurück.
substr_count Ermittelt die Anzahl von Vorkommen in einer Zeichenkette.
substr_replace Ersetzt Teile einer Zeichenkette.
str_repeat Wiederholt ein bestimmtes Zeichen.
trim Entfernt Leerzeichen auf der linken und der rechten Seite.
ucfirst Macht das erste Zeichen zum Grossbuchstaben.
ucwords Das erste Zeichen jedes Worts wird zum Grossbuchstaben.
wordwrap Bricht Texte an Wortgrenzen um.
Sprachfunktionen
levenshtein Gibt die Entfernung zweier Zeichenketten nach der Levenshtein-Funktionsweise zurück.
metaphone Gibt den Lautwert einer Zeichenkette zurück.
soundex Bildet den Lautwert einer Zeichenkette ab.
similar_text Berechnet die Ähnlichkeit zwischen zwei Zeichenketten.

Zeichenkettenverarbeitung

Bei der Übernahme von Daten spielen Leerzeichen eine wichtige Rolle. Viele Datenbanken haben feste Spaltenbreiten eingestellt und füllen Felder entsprechend mit Leerzeichen auf. Der Webbrowser wird mehrere Leerzeichen hintereinander nicht darstellen, ausserdem stören führende Leerzeichen beim Sortieren. Es gibt also gute Gründe, überflüssige Leerzeichen zu entfernen. Dazu zählen alle sogenannten "whitespaces", also Zeichen die beim Ausdruck "weiss" sind:

' ', 0x20 Leerschlag
\r Zeilenumbruch (Wagenrklauf, engl. carriage return)
\n Zeilenumbruch (Neue Zeile, engl. newline)
\t Horizontaler Tabulator
\0113 Vertikaler Tabulator

Die Funktion "chop" entfernt Leerzeichen von der rechten Seite, "ltrim" entfernt sie von der linken Seite, "trim" von beiden Seiten einer Zeichenkette. Mehrere Leerzeichen hintereinander werden vom Webbrowser zu einem Leerzeichen verkürzt. Im Quelltext sind die mehrfachen Leerzeichen allerdings durchaus vorhanden. Die Funktionen geben den veränderten Wert zurück - die übergebene Variable selbst bleibt unverändert.

<?php
$leerzeichen = "  Am Anfang und am Ende   ";
echo ".", chop($leerzeichen),  ".<br />";
echo ".", ltrim($leerzeichen), ".<br />";
echo ".", trim($leerzeichen),  ".<br />";
?>

. Am Anfang und am Ende.
.Am Anfang und am Ende .
.Am Anfang und am Ende.

Die Länge von Zeichenketten kann mit "strlen" bestimmt werden. Mit "strrev" lässt sich die Reihenfolge der Zeichen umkehren. "strtolower", "strtoupper", "ucfirst" und "ucwords" führen Umwandlungen zwischen Gross- und Kleinschreibung durch.

<?php
$zeichenkette = "Die Skriptsprache PHP ist vielseitig";
echo "strlen: ",     strlen($zeichenkette),     " Zeichen.<br />";
echo "strrev: ",     strrev($zeichenkette),     ".<br />";
echo "strtolower: ", strtolower($zeichenkette), ".<br />";
echo "strtoupper: ", strtoupper($zeichenkette), ".<br />";
echo "ucfirst: ",    ucfirst($zeichenkette),    ".<br />";
echo "ucwords: ",    ucwords($zeichenkette),    ".<br />";
?>

36 Zeichen.
gitiesleiv tsi PHP ehcarpstpirkS eiD.
die skriptsprache php ist vielseitig.
DIE SKRIPTSPRACHE PHP IST VIELSEITIG.
Die Skriptsprache PHP ist vielseitig.
Die Skriptsprache PHP Ist Vielseitig.

Zeichenketten müssen oft zerlegt oder zusammengesetzt werden. "explode" zerlegt eine Zeichenkette anhand des Auftretens eines Trennzeichens und weist die einzelnen Elemente dann einem Array zu. Im folgenden Beispiel wird eine kommagetrennte Zeichenkette in ein Array zerlegt, dieses Array wird anschliessend mit "sort" sortiert und wieder an die Zeichenkette zurückgegeben, indem es mit "implode" zusammengefasst wird. Der erste Parameter von "implode" bestimmt das Trennzeichen, der zweite die umzuwandelnde Zeichenkette. Das Original wird dabei nicht verändert.

<?php
$zeichenkette = "Klaus,Johann,Friedrich,Edeltraut,Lukas";
echo $zeichenkette, "<br />";
$sorter = explode(",", $zeichenkette);
sort($sorter);
$zeichenkette = implode(",", $sorter);
echo $zeichenkette, "<br />";
?>

Klaus,Johann,Friedrich,Edeltraut,Lukas
Edeltraut,Friedrich,Johann,Klaus,Lukas

Oft müssen Zeichenketten durchsucht werden. Mit "strpos" und "strrpos" wird die Position eines Zeichens innerhalb einer Zeichenkette bestimmt. "strrchr", "substr", "strstr" und "preg_match" bieten sich an, um die Zeichenkette gleich an der Fundstelle zu trennen.

"strpos" findet das erste Auftreten der Zeichenkette "Nadel" in der Zeichenkette "Heuhaufen". Der Vergleich beginnt an der mit "offset" bestimmten Position. Wird keine Übereinstimmung gefunden, so gibt die Funktion "FALSE" zurück.

int strpos(string Heuhaufen, string Nadel[, int offset])

Wird "offset" verwendet, so wird erst ab dieser Position gesucht. Im Gegensatz zu "strrpos" verarbeitet die Funktion "strpos" auch Zeichenketten. Im Beispiel wird erst ab der 9. Position gesucht (auf Position 8 befindet sich das erste "e", auf Position 11 das nächste).

<?php
$zeichen  = "e";
$haystack = "Das ist eine lange Zeichenkette";
$position = strpos($haystack, $char, 9);
echo "Das erste <b>$zeichen</b> ist auf Position: $position";
?>
Das erste e ist auf Position: 11

"strstr" sucht das Auftreten eines Zeichens vom Beginn an und gibt die Zeichenkette ab dieser Position zurück. "strrchr" sucht das letzte Auftreten des Zeichens und gibt die Zeichenkette von dort beginnend bis zum Ende zurück. "substr" ermöglicht die Auswahl eines Teils einer Zeichenkette durch Angabe der Position und der Länge des Teils.

<?php
$zeichenkette = "Klaus,Johann,Friedrich,Edeltraut,Lukas";
echo "<p>$zeichenkette</p>";
echo "Erste Position : ", strpos($zeichenkette,"e"),   "<br />";
echo "Letzte Position: ", strrpos($zeichenkette,"e"),  "<br />";
echo "Teil           : ", substr($zeichenkette, 6, 4), "<br />";
echo "Von rechts     : ", strrchr($zeichenkette, "r"), "<br />";
echo "Von links      : ", strstr($zeichenkette, "r"),  "<br />";
?>

Klaus,Johann,Friedrich,Edeltraut,Lukas
Erste Position : 16
Letzte Position: 25
Teil : Joha
Von rechts : raut,Lukas
Von links : riedrich,Edeltraut,Lukas

"strtok" zerlegt eine Zeichenkette anhand des Trennzeichens "delimiter" in mehrere Teile (engl. token).

mixed strtok([string argument,] string delimiter)

Die zu zerlegende Zeichenkette muss nur beim ersten Aufruf angegeben werden. Alle folgenden Aufrufe benötigen nur das Trennzeichen. Im Gegensatz zu "explode" wird kein Array erzeugt, sondern immer nur das nächste Token zurückgegeben. Es ist auch erlaubt, mehrere Trennzeichen anzugeben, die dann alternativ in der Zeichenkette enthalten sein können. Die Funktion gibt, wenn keine Teile mehr zu extrahieren sind, "FALSE" zurück. das folgende Beispiel zerlegt einen Text nach Leerzeichen.

<?php
$text  = "Ein einfacher Text";
$chars = " ";
$part  = strtok($text, $chars);
do
{
  echo "$part<br />\n";
}
while($part = strtok($chars));
?>

Ein
einfacher
Text

Durch Erweiterung der Variable "$chars" können auch weitere Zeichen als Trennzeichen erkannt werden.

<?php
$text  = "Ein einfacher Text.";
$chars = " .,?";
$part  = strtok($text, $chars);
do
{
  echo "$part<br />\n";
}
while($part = strtok($chars));
?>

Ein
einfacher
Text.

Die Funktion "strspn" ermittelt die Anzahl der Zeichen am Anfang von "$zeichenkette1", die aus dem in "$zeichenkette2" übergebenen Zeichenvorrat stammen.

int strspn ( string $zeichenkette1, string $zeichenkette2 [, int $start  [, int $laenge ]] )

Die Funktion "strcspn" ermittelt die Länge von "$zeichenkette1" bis zum ersten Erscheinen eines der in "$zeichenkette2" übergebenenen Zeichen.

int strcspn ( string $zeichenkette1, string $zeichenkette2 [, int $start  [, int $laenge ]] )
<?php
$zeichenkette = "Lukas,Findo,Schifer,Balts";
echo "<p>$zeichenkette</p>\n";
echo "Enthalten: ", strspn($zeichenkette, "uLks"), "<br />\n";
echo "Nicht enthalten: ", strcspn($zeichenkette, "i");
?>

Lukas,Findo,Schifer,Balts

3
7

Die Funktion "str_replace" ersetzt alle Vorkommen der Suchzeichenkette durch eine andere Zeichenkette. Im Beispiel wird die durch Kommata getrennte Liste zeilenweise ausgegeben, indem als Trennzeichen das HTML-Tag "<br \>" eingesetzt wird.

<?php
$zeichenkette = "Balts,Endo,Schifer";
echo "<p>$zeichenkette</p>\n";
echo str_replace(",", "<br />\n", $zeichenkette);
?>

Balts,Endo,Schifer

Balts
Endo
Schifer

Umwandlungsfunktionen

"chr" und "ord" sind typische Umwandlungsfunktionen. Damit werden einzelne Werte in ASCII-Zeichen umgewandelt und umgekehrt. Dabei wird der erweiterte 8-Bit-ASCII-Zeichensatz berücksichtigt, sodass auch Umlaute richtig behandelt werden.

"chr" wird oft verwendet, um bestimmte Zeichen auszugeben, die für den PHP-Parser von Bedeutung sind - zum Beispiel Anführungszeichen.

"ord" gibt den ASCII-Wert eines Zeichens zurück. Wird eine Zeichenkette mit mehr als einem Zeichen übermittelt, so wird der Wert nur für das erste Zeichen ermittelt.

<?php
echo "Zeichen 105 = ", chr(105);
echo "<br />";
$zeichen = "Ö";
echo "ASCII-Wert von $zeichen = ", ord($zeichen);
?>

i
195

Folgendes Skript zeigt, welchen Code einige Sonderzeichen in PHP haben.

<?php
$array = array("\n", "\t", "\r", "\\");
foreach ($array as $str)
{
  echo "ord(" . ord($str) . ")<br />\n";
}
?>

ord(10)
ord(9)
ord(13)
ord(92)

Sonderzeichenbehandlung

Viele Zeichen haben innerhalb einer Zeichenkette eine Sonderbedeutung, beispielsweise kann der PHP-Interpreter anhand des "$"-Zeichens Variablen mitten in einer Zeichenkette erkennen und durch den Inhalt der Variablen ersetzen.

Die Funktion "quotemeta" setzt einen Backslash ("\") vor jedes der folgenden Sonderzeichen:

.   \   +   *   ?   [   ]   ^   (   )   $

Die Funktion "addslashes" setzt einen Backslash ("\") vor jedes der folgenden Sonderzeichen, die oft von Datenbanken interpretiert werden. Dabei steht "NUL" für den absoluten Wert 0 - nicht zu verwechseln mit der Konstanten "NULL", die für "undefiniert" steht. In einigen Programmiersprachen dient ein NUL-Byte als Endekennzeichen für Zeichenketten. Die Zeichenkette wird verändert zurückgegeben.

'   "   \    NUL

In manchen Situationen ist die Anwendung trickreich. So erkennt die Funktion typische Zeichen und versieht sie nicht mit einem Backslash, sondern lässt die Ausführung zu. Das folgende Beispiel zeigt diesen Effekt. Die Zeichenkette "c:\temp" enthält "\t", das Ersatzzeichen für den Tabulator. Bereits bei der Zuweisung der Zeichenkette mit doppelten Anführungszeichen wird der Zeichenketteninterpreter eingeschaltet.

<?php
$str = "c:\temp";
echo "A: " . $str             . "<br />\n";
echo "B: " . addslashes($str) . "<br />\n";

$str = addslashes("c:\temp");
echo "E: " . $str             . "<br />\n";
echo "F: " . addslashes($str) . "<br />\n";

$str = 'c:\temp';
echo "C: " . $str             . "<br />\n";
echo "D: " . addslashes($str) . "<br />\n";

$str = addslashes('c:\temp');
echo "G: " . $str             . "<br />\n";
echo "H: " . addslashes($str) . "<br />\n";
?>

c: emp
c: emp
c: emp
c: emp
c:\temp
c:\\temp
c:\\temp
c:\\\\temp

Die Funktion "stripslashes" macht die durch "addslashes" vorgenommenen Umwandlungen wieder rückgängig.

Die Funktion "addcslashes" versieht in einer Zeichenkette ebenfalls bestimmte vorgegebene Elemente mit einem Backslash. Die Zeichenkette wird verändert zurückgegeben. Dabei sind in "$zeichenliste" alle Zeichen enthalten, die mit einem Backslash versehen werden sollen. Nicht über die Tastatur eingebbare Zeichen werden im Oktalformat angegeben. Es ist möglich. mit zwei Punkten einen Bereich anzugeben (z. B. "a..z") - wenn allerdings das erste Zeichen einen höheren Code als das zweite hat, so werden nur die beiden Zeichen, aber nicht diejenigen dazwischen erkannt.

string addcslashes(string $zeichenkette, string $zeichenliste)

Folgende Anweisung wandelt die Zeichen "\", "@" und "!" um.

<?php
$convert = "ugu@dodo.net!";
$cslash = addcslashes($convert, "\@!");
echo $cslash . "<br />\n";

$convert = "9. E-Mail: ugu@dodo.net !";
$cslash = addcslashes($convert, "a..zA..Z0..9@!");
echo $cslash;
?>

ugu\@dodo.net\!
\9. \E-\M\a\i\l: \u\g\u\@\d\o\d\o.\n\e\t \!

Zeichenketten vergleichen

Beim Vergleichen von Zeichenketten sollte an die losen Datentypen von PHP und die gegebenenfalls ablaufenden Umwandlungsprozesse gedacht werden. Folgendes Beispiel führt zu einer Meldung, weil PHP zuerst eine Umwandlung durchführt, um den Vergleich mit zwei gleichartigen Datentypen durchführen zu können. Aus der Zeichenkette "26" wird so die Zahl 26, wenn PHP den Inhalt als Zahl erkennen kann.

<?php
$zahl1 = 26;
$zahl2 = "26";
if ($zahl1 == $zahl2)
{
  echo "Die Zahlen sind gleich.<br />\n";
}
?>

Die Zahlen sind gleich.

Wenn solche Vergleiche benötigt werden und der der Variablen bereits zugewiesene Datentyp unterschieden werden soll, so ist der erweiterte Vergleichsoperator "===" angebracht.

<?php
$zahl1 = 26;
$zahl2 = "26";
if ($zahl1 === $zahl2)
{
  echo "Die Zahlen sind gleich.<br />\n";
}
?>

Für den umgekehrten Weg dient die Funktion "strcmp", die ebenfalls Zeichenketten vergleicht und Zahlen immer in eine Zeichenkette umwandelt. Sie vergleicht zwei Zeichenketten und gibt

  • den Wert "-1" zurück, wenn die erste Zeichenkette kleiner als die zweite ist. Als "kleiner" wird die Zeichenkette angesehen, wenn der ASCII-Wert des ersten nicht übereinstimmenden Zeichens auf derselben Position in der Zeichenkette kleiner ist.
  • den Wert "0" zurück, wenn beide Zeichenketten gleich sind.
  • den Wert "1" zurück, wenn die erste Zeichenkette grösser ist als die zweite. Als "grösser" wird die Zeichenkette angesehen, wenn der ASCII-Wert des ersten nicht übereinstimmenden Zeichens auf derselben Position in der Zeichenkette grösser ist.

Da Kleinbuchstaben im ASCII-Alphabet nach den Grossbuchstaben kommen, ist "C" kleiner als "a". Dieser direkte Vergleich ist allerdings wenig praxisnah.

<?php
$str1 = "Endo";
$str2 = "Balts";
echo strcmp($str1, $str2);
?>
1

Die Funktion "strnatcmp" vergleicht Zeichenketten so, wie es die natürliche Leseweise ergeben würde. "strnatcasecmp" lässt dabei zusätzlich die Gross- und Kleinschreibung unberücksichtigt.

 int strnatcmp(string $zeichenkette1, string $zeichenkette2)
 int strnatcasecmp(string $zeichenkette1, string $zeichenkette2)

Normalerweise suchen Rechner zeichenweise. Bei einem direkten Vergleich ist deshalb die Zeichenkette "2" grösser als die Zeichenkette "10" - die 2 ist grösser als die 1, damit ist der Vergleich abgeschlossen. "strnatcmp" versucht dagegen, die menschliche Leseweise zu imitieren und würde in diesem Fall erkennen, dass 10 grösser ist als 2.

<?php
$str1 = "2";
$str2 = "10";
echo "strcmp: ";
strcmp($str1, $str2) == 1 ? print "$str1 grösser"
                          : print "$str2 grösser";
echo "<br />\n";
echo "strnatcmp: ";
strnatcmp($str1, $str2) == 1 ? print "$str1 grösser"
                             : print "$str2 grösser";
echo "<br />\n";
?>

strcmp: 2 grösser
strnatcmp: 10 grösser

HTML-spezifische Funktionen

HTML ist eine Seitenbeschreibungssprache, die ASCII-Zeichen verwendet. Dokumente werden mit Elementen strukturiert, die als "Tags" bezeichnet werden. Solche Tags beginnen mit einem "<"-Zeichen und enden mit einem ">"-Zeichen. Einige Symbole (z. B. "&") haben ebenfalls eine besondere Bedeutung. Mit besonderen Funktionen wird in PHP die Umwandlung unterstützt.

Die Funktion "htmlspecialchars" wandelt die folgenden Zeichen so um, dass die Darstellung in HTML richtig erfolgt. Die Funktion berücksichtigt keineswegs alle HTML-Zeichen, sondern wirklich nur die hier aufgeführten. Die Anwendung betrifft vor allem Formulare, wo diese Zeichen gesondert verarbeitet werden können.

Zeichen Umwandlung
& &amp
" &quot
< &lt
> &gt
<?php
$html = "<p>Wir haben mit <br />PHP<br /> was vor.</p>";
echo $html;
echo "<p>";
echo htmlspecialchars($html);
echo "</p>\n";
?>

Wir haben mit
PHP
was vor

Wir haben mit <br>PHP<br /> was vor.

Die Funktion "htmlentities" wandelt dagegen alle HTML-Symbole um und berücksichtigt dabei auch die Umlaute, das "Ä" wird so zum "&Auml". Zur Erkennung von Sonderzeichen und Zeichenketten wird der Zeichensatz ISO-8859-1 verwendet.

Die Funktion "get_html_translation_table" gibt die Umwandlungstabelle für die HTML-Sonderzeichen aus. Im folgenden Beispiel enthält die Variable "$encoded" den Inhalt mit HTML-Sonderzeichen, die nur im HTML-Quelltext sichtbar sind, vom Webbrowser aber in jedem Fall richtig dargestellt werden.

<?php
$trans   = get_html_translation_table(HTML_ENTITIES);
$str     = "Hallo & <Frau> & Krämer";
$encoded = strtr($str, $trans);
echo $encoded;
?>
Hallo & <Frau> & Krämer

Zeichenketten enthalten oft normale Zeichenumbrüche, die Darstellung ist teilweise vom Betriebssystem abhängig. In HTML werden Zeilenumbrüche mit dem Tag "<br>" in XHTML mit "<br />", erzeugt. Die Funktion "nl2br" (newline to break) fügt an alle Zeilenumbrüche die Zeichenfolge "<br />" an. Damit die Ausgabe auch bei der Anzeige des Quelltexts einer HTML-Seite nicht unleserlich wird, bleiben die ursprünglichen Umbruchcodes "chr(10)" und/oder "chr(13)" erhalten. Auf welche Weise "nl2br" reagiert ist vom Betriebssystem abhängig. Verwaltet man seine Texte unter Linux und lässt "nl2br" unter Windows ablaufen, so wird die Funktion also nicht unbedingt richtig reagieren.

<?php
$vieltext = "Zuviel
   Hopfen
  in Ägypten
";
echo "<p>" . $vieltext        . "</p>\n";
echo "<p>" . nl2br($vieltext) . "</p>\n";
?>

Zuviel Hopfen in Ägypten

Zuviel
Hopfen
in Ägypten

Codierung von URL-Daten

Werden Zeichenketten an eine URL angehängt werden, so müssen diese den Konventionen für den Aufbau einer URL genügen - Umlaute, Sonderzeichen und Leerzeichen sind dabei nicht erlaubt. Die technische Grundlage für die notwendige Umwandlung kann in RFC 1738 nachgelesen werden. Umgewandelt werden sollen danach alle Zeichen ausser alphanumerischen und dem Punkt ("."), dem Unetrstrich ("_") und dem Minuszeichen ("-").

Die Funktion "rawurlencode" wandelt die nicht zulässigen Zeichen in zulässige um. Dabei handelt es sich um die Zeichenfolge "%HH", wobei "HH" für den hexadezimalen ASCII-Wert des Zeichens steht.

Die Funktion "urlencode" nimmt bei der Umwandlung das Pluszeichen ("+") als Ersatzzeichen, was historisch verwendet wird und aus Kompatibilitätsgründen zum Einsatz gelangt. Es entspricht aber nicht der erwähnten RFC 1738.

<?php
$html  = "Dies soll übertragen werden";
$html1 = rawurlencode($html);
$html2 = urlencode($html);
echo $html  . "<br />";
echo $html1 . "<br />";
echo $html2 . "<br />";
?>

Dies soll übertragen werden
Dies%20soll%20%C3%BCbertragen%20werden
Dies+soll+%C3%BCbertragen+werden

Die Funktion "parse_str" erkennt den an die URL angehängten Parameter und weist ihn einem Array zu. Diese Funktion ist für alle interaktiv Daten verarbeitenden Skripte von grösster Bedeutung. Alternativ kann als zweiter Parameter ein Array angegeben werden - in diesem Fall enthält es anschliessend die Parameter / Werte-Paare.