chr()
Die Funktion chr() gibt ein Zeichen anhand des ASCII-Codes zurück. Syntax, Wertebereich und praktische Anwendungsbeispiele werden hier erklärt.
Die PHP-Funktion chr() gibt einen einbytigen String zurück, der das Zeichen enthält, das einem bestimmten Bytewert (üblicherweise einem ASCII-Code) entspricht. Sie ist die Umkehrung von ord(), die den umgekehrten Weg geht — von einem Zeichen zu seinem numerischen Code.
Diese Seite behandelt die Syntax von chr(), den Umgang mit Werten außerhalb des Bereichs 0–255 sowie praktische Muster zum Aufbau von Strings aus numerischen Codes.
Syntax
chr(int $codepoint): stringchr() nimmt einen Parameter entgegen, $codepoint, den numerischen Wert des zurückzugebenden Bytes, und gibt einen einstelligen (einbytigen) String zurück. Der Wert wird im Bereich 0–255 interpretiert. Werte außerhalb dieses Bereichs werden per Modulo 256 angepasst: PHP addiert oder subtrahiert so oft 256, bis der Wert zwischen 0 und 255 liegt. chr(321) entspricht also chr(321 - 256), d. h. chr(65), und chr(-1) entspricht chr(255).
Einfaches Beispiel
Die häufigste Verwendung ist die Umwandlung eines ASCII-Codes in sein Zeichen. Der Code 65 steht für den Buchstaben A:
Ausgabe:
AWir übergeben den ASCII-Code an chr(), und die Funktion gibt das entsprechende Zeichen zurück.
Eine Zeichenfolge generieren
Da Buchstaben aufeinanderfolgende ASCII-Codes haben, kann man über einen numerischen Bereich iterieren, um eine Zeichenfolge zu erzeugen. Großbuchstaben A–Z haben die Codes 65 bis 90:
Ausgabe:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZJeder ASCII-Code wird an chr() übergeben, die den entsprechenden Buchstaben zurückgibt.
Werte außerhalb von 0–255
chr() erzeugt bei einem Wert außerhalb des gültigen Bereichs keinen Fehler — stattdessen wird Modulo 256 angewendet. Das ist wichtig zu wissen, damit keine überraschenden Ergebnisse entstehen, wenn Berechnungen einen Wert über den Bytebereich hinausschieben:
<?php
echo chr(65) . "\n"; // A (in range)
echo chr(321) . "\n"; // A 321 - 256 = 65
echo chr(256 + 65); // A wraps back to 65
?>Alle drei Zeilen geben A aus, weil 321 und 256 + 65 beide auf 65 reduziert werden.
chr() vs. ord()
chr() und ord() bilden ein komplementäres Paar:
chr(int)→ gibt das Zeichen zu einem Bytewert zurück.ord(string)→ gibt den Bytewert des ersten Zeichens eines Strings zurück.
<?php
$code = ord("A"); // 65
echo chr($code); // A
?>Einen Wert durch ord() und dann durch chr() zu führen (oder umgekehrt) ergibt das Original — sie sind invers zueinander.
Hinweis zu Multibyte-Text
chr() arbeitet auf einzelnen Bytes und ist daher nur für ASCII (0–127) und andere Einzelbyte-Kodierungen zuverlässig. Es erzeugt kein UTF-8-Multibyte-Zeichen: Ein Unicode-Codepunkt über 255 führt nicht zum entsprechenden Emoji oder Akzentbuchstaben — er wird stattdessen in den Bereich 0–255 gefaltet. Für vollständige Unicode-Codepunkte verwendet man mb_chr() (und mb_ord() für die Umkehrung) aus der mbstring-Erweiterung.
Verwandte Funktionen
ord()— die Umkehrung: Zeichen zu seinem ASCII-/Bytewert.str_split()— einen String in ein Array von Zeichen aufteilen.strtoupper()— einen String in Großbuchstaben umwandeln.- PHP Strings — Übersicht zur String-Verarbeitung in PHP.