mb_ord / mb_chr în PHP

mb_ord returnează codul Unicode al unui caracter, iar mb_chr returnează caracterul pentru un cod Unicode.

Sintaxă
mb_ord(string $string, ?string $encoding = null): int|false

Ce face mb_ord / mb_chr

ord și chr lucrează doar cu un octet (0-255). Variantele mb_ lucrează cu coduri Unicode întregi: mb_ord("ș") dă 537, iar mb_chr(537) dă „ș”.

mb_ord se uită doar la primul caracter al textului. mb_chr returnează false pentru coduri care nu sunt caractere valide.

Parametri

Parametru Descriere
$string La mb_ord: textul al cărui prim caracter este analizat.
$codepoint La mb_chr: codul Unicode.
$encoding Opțional. Codarea.

Ce returnează

mb_ord: codul Unicode. mb_chr: caracterul. Ambele returnează false la eroare.

Exemple

Exemplul 1: Codurile literelor românești

<?php
foreach (mb_str_split("ăâîșț") as $litera) {
    printf("%s = %d (U+%04X)\n", $litera, mb_ord($litera), mb_ord($litera));
}

Rezultat

ă = 259 (U+0103)
â = 226 (U+00E2)
î = 238 (U+00EE)
ș = 537 (U+0219)
ț = 539 (U+021B)

Exemplul 2: Diferența dintre ș cu virgulă și varianta veche, cu sedilă

Textele vechi folosesc adesea litera cu sedilă (U+015F). Codul arată ușor diferența.

<?php
$corect = mb_chr(0x219);
$vechi = mb_chr(0x15F);

echo "Virgulă: U+" . dechex(mb_ord($corect)) . ", sedilă: U+" . dechex(mb_ord($vechi)) . "\n";
var_dump($corect === $vechi);

Rezultat

Virgulă: U+219, sedilă: U+15f
bool(false)

Greșeli frecvente

  • Folosești ord pe o literă cu diacritice și primești doar primul octet (de exemplu 200), plus un mesaj Deprecated în PHP 8.5. Folosește mb_ord.

Comenzi înrudite

  • chr / ord: chr transformă un cod numeric (0-255) în caracter, iar ord face inversul: dă codul primului octet al unui text.
  • mb_str_split: Împarte un text în caractere (sau grupuri de caractere), fără să strice literele cu diacritice.
  • mb_encode_numericentity / mb_decode_numericentity: Transformă caracterele dintr-un interval de coduri în entități numerice HTML (&#537;) și invers.