ord()
Erfahren Sie mehr über die PHP-Funktion ord(), die den ASCII-Wert des ersten Zeichens eines Strings zurückgibt – mit Syntax, Beispielen und Praxistipps.
Die PHP-Funktion ord() gibt den Byte-Wert (0–255) des ersten Zeichens eines Strings zurück. Bei reinem ASCII-Text entspricht dies dem ASCII-Code des Zeichens — zum Beispiel ergibt 'A' den Wert 65. Sie ist das Gegenteil von chr(), das eine Zahl wieder in ein Zeichen umwandelt.
Diese Seite behandelt die Syntax von ord(), das Verhalten bei verschiedenen Strings, den häufigen Multibyte-Fallstrick und praktische Anwendungsmuster, bei denen die Umwandlung eines Zeichens in seinen numerischen Code sinnvoll ist.
Syntax
ord(string $character): intord() nimmt ein einziges Argument entgegen – den zu untersuchenden String – und gibt eine ganze Zahl zurück. Nur das erste Zeichen wird betrachtet, der Rest des Strings wird ignoriert.
| Parameter | Beschreibung |
|---|---|
$character | Der String, dessen erstes Zeichen (Byte) Sie als numerischen Wert erhalten möchten. |
Einfaches Beispiel
Ausgabe:
7272 ist der Code für "H", das erste Zeichen von "Hello". Da nur das erste Zeichen relevant ist, geben sowohl ord('ABC') als auch ord('A') den Wert 65 zurück.
Häufige Rückgabewerte
Dies sind die Codes, denen Sie bei der Arbeit mit Text am häufigsten begegnen werden:
<?php
echo ord('A'), "\n"; // 65 — start of uppercase letters
echo ord('a'), "\n"; // 97 — start of lowercase letters
echo ord('0'), "\n"; // 48 — start of digit characters
echo ord(' '), "\n"; // 32 — space
echo ord("\n"), "\n"; // 10 — newline (line feed)
echo ord(''), "\n"; // 0 — empty string yields 0
?>Ausgabe:
65
97
48
32
10
0Beachten Sie die letzte Zeile: Die Übergabe eines leeren Strings führt zu keinem Fehler — ord('') gibt einfach 0 zurück.
Der Multibyte-Fallstrick
ord() arbeitet mit Bytes, nicht mit Unicode-Zeichen. Ein Zeichen außerhalb des grundlegenden ASCII-Bereichs (wie é, € oder ein Emoji) wird in UTF-8 als mehrere Bytes gespeichert, und ord() gibt nur den Wert des ersten Bytes zurück:
<?php
echo ord('é'); // 195, not the Unicode code point 233
?>Ausgabe:
195Wenn Sie den tatsächlichen Unicode-Codepunkt eines Multibyte-Zeichens benötigen, verwenden Sie stattdessen mb_ord() (aus der mbstring-Erweiterung):
<?php
echo mb_ord('é', 'UTF-8'); // 233
?>Wann Sie ord() verwenden sollten
Die Umwandlung eines Zeichens in eine Zahl ermöglicht Berechnungen und Vergleiche, die auf dem Zeichen selbst umständlich wären.
Groß-/Kleinschreibung manuell ändern. Groß- und Kleinbuchstaben liegen in ASCII genau 32 Positionen auseinander, sodass Sie die Schreibweise durch Addition oder Subtraktion von 32 mit ord() und chr() ändern können:
<?php
$char = 'A';
echo chr(ord($char) + 32); // a
?>Ausgabe:
aJedes Zeichen eines Strings untersuchen. Iterieren Sie mit strlen() und greifen Sie per Index auf den String zu, um den Code jedes Zeichens zu sehen — praktisch zum Debuggen von Kodierungsproblemen oder zum Erstellen einer einfachen Chiffre:
<?php
$s = 'PHP';
for ($i = 0; $i < strlen($s); $i++) {
echo $s[$i] . '=' . ord($s[$i]) . ' ';
}
?>Ausgabe:
P=80 H=72 P=80 Eingaben validieren. Da Buchstaben und Ziffern bekannte Bereiche belegen, können Sie die Kategorie eines Zeichens durch einen numerischen Vergleich prüfen, zum Beispiel ord($c) >= 48 && ord($c) <= 57, um zu überprüfen, ob $c eine Ziffer ist.
Verwandte Funktionen
chr()— das Gegenteil: gibt das Zeichen für einen gegebenen ASCII-/Byte-Wert zurück.strlen()— die Anzahl der Bytes in einem String, nützlich für das Iterieren über Zeichen.str_split()— teilt einen String in ein Array von Zeichen auf.substr()— extrahiert einen Teil eines Strings.bin2hex()— zeigt die rohen Bytes eines Strings als Hexadezimalwert an.