Start · Sprachen · PHP · Referenz · mb_chr

mb_chr

Funktion

Gibt das Zeichen zurück, das dem angegebenen Unicode-Codepoint in der gewünschten Zeichenkodierung entspricht.

seit PHP 7.2.0 Kategorie: string

Signatur

mb_chr(int $codepoint, ?string $encoding = null): string|false

Beschreibung

mb_chr() ist das Gegenstück zu mb_ord() und konvertiert einen numerischen Unicode-Codepoint in das entsprechende Zeichen. Damit lässt sich beispielsweise direkt aus einem bekannten Code-Point ein Zeichen erzeugen, ohne dass der Entwickler die tatsächliche Byte-Darstellung in der Zielkodierung kennen muss.

Der Parameter $encoding gibt die Ausgabekodierung an. Wird er weggelassen oder auf null gesetzt, verwendet die Funktion die interne Kodierung, die über mb_internal_encoding() gesetzt wurde. Typische Werte sind 'UTF-8', 'UTF-16BE' oder 'ISO-8859-1'.

Die Funktion eignet sich besonders bei der Verarbeitung von Texten aus verschiedenen Sprachräumen (z. B. CJK-Zeichen, Emoji, spezielle Sonderzeichen), wenn ein Zeichen anhand seines Unicode-Wertes generiert werden soll. In Kombination mit mb_ord() kann man zeichenweise Transformationen (z. B. einfache Caesar-Verschlüsselung für Unicode) umsetzen.

Liegt der $codepoint außerhalb des gültigen Bereichs für die gewählte Kodierung oder ist der Codepoint allgemein ungültig (negativ), gibt die Funktion false zurück.

Parameter

Name Typ Default Beschreibung
$codepoint Pflicht int Der numerische Unicode-Codepoint (z. B. 65 für 'A', 128514 für 😂). Muss ein gültiger, nicht-negativer ganzzahliger Wert sein.
$encoding ?string null Die Zeichenkodierung der Ausgabe, z. B. 'UTF-8' oder 'UTF-16BE'. Wird null oder kein Wert übergeben, wird die interne Kodierung (mb_internal_encoding()) verwendet.

Rückgabewert

Typ
string|false
Beschreibung
Gibt einen string zurück, der das dem Codepoint entsprechende Zeichen in der gewählten Kodierung enthält. Bei einem ungültigen Codepoint oder einer nicht unterstützten Kodierung wird false zurückgegeben.

Beispiele

Einfaches ASCII-Zeichen erzeugen

<?php
// Codepoint 65 entspricht dem Zeichen 'A'
$zeichen = mb_chr(65, 'UTF-8');
echo $zeichen; // A

// Codepoint 97 entspricht 'a'
echo mb_chr(97, 'UTF-8'); // a
Aa

Unicode-Sonderzeichen und Emoji erzeugen

<?php
// Erzeugt das Euro-Zeichen €
echo mb_chr(0x20AC, 'UTF-8') . PHP_EOL;

// Erzeugt das Emoji 😂 (U+1F602)
echo mb_chr(0x1F602, 'UTF-8') . PHP_EOL;

// Erzeugt ein japanisches Schriftzeichen (U+65E5 = 日)
echo mb_chr(0x65E5, 'UTF-8') . PHP_EOL;
€ 😂 日

Zusammenspiel mit mb_ord (Zeichen verschieben)

<?php
// Einfache Verschiebechiffre für ASCII-Buchstaben mit mb_ord/mb_chr
$text = 'Hello';
$verschluesselt = '';

foreach (mb_str_split($text, 1, 'UTF-8') as $zeichen) {
    $code = mb_ord($zeichen, 'UTF-8');
    // Jeden Buchstaben um 1 verschieben
    $verschluesselt .= mb_chr($code + 1, 'UTF-8');
}

echo $verschluesselt;
Ifmmp

Ungültiger Codepoint – Fehlerbehandlung

<?php
// Negativer Codepoint ist ungültig
$result = mb_chr(-1, 'UTF-8');

if ($result === false) {
    echo 'Ungültiger Codepoint übergeben.';
}
Ungültiger Codepoint übergeben.

// Wichtig · Fallstricke

Kodierungskompatibilität: Nicht jeder Unicode-Codepoint kann in jeder Kodierung dargestellt werden. So lassen sich z. B. Emoji (Codepoints > U+FFFF) nicht in ISO-8859-1 kodieren – in diesem Fall gibt die Funktion false zurück. Für volle Unicode-Unterstützung sollte stets UTF-8 verwendet werden.

Rückgabe prüfen: Da die Funktion false zurückgeben kann, sollte der Rückgabewert mit === false geprüft werden, bevor er weiterverarbeitet wird. Ein einfaches if ($result) würde auch das Nullzeichen (\0, Codepoint 0) als falsch werten.

PHP-Version: mb_chr() ist erst ab PHP 7.2.0 verfügbar. In älteren PHP-Versionen kann json_decode('"\u'.sprintf('%04X', $codepoint).'"') als Notlösung für UTF-8-Ausgaben verwendet werden.