mb_encode_numericentity / mb_decode_numericentity în PHP

Transformă caracterele dintr-un interval de coduri în entități numerice HTML (ș) și invers.

Sintaxă
mb_encode_numericentity(string $string, array $map, ?string $encoding = null, bool $hex = false): string

Ce face mb_encode_numericentity / mb_decode_numericentity

mb_encode_numericentity înlocuiește fiecare caracter al cărui cod Unicode intră în intervalele din $map cu o entitate numerică &#cod;. Rezultatul conține doar ASCII, dar se afișează corect în orice pagină HTML.

$map are grupuri de câte patru numere: început, sfârșit, deplasare, mască. Pentru „toate caracterele non-ASCII” se folosește [0x80, 0x10FFFF, 0, 0x1FFFFF]. mb_decode_numericentity face conversia inversă, cu același $map.

Parametri

Parametru Descriere
$string Textul convertit.
$map Intervalele de coduri convertite, în grupuri de câte patru numere.
$encoding Opțional. Codarea textului.
$hex Doar la codare, opțional: true scrie entitățile în hexazecimal (ș).

Ce returnează

Textul cu entități (respectiv cu caracterele obișnuite).

Exemple

Exemplul 1: Diacritice transformate în entități și înapoi

<?php
$harta = [0x80, 0x10FFFF, 0, 0x1FFFFF];

$codat = mb_encode_numericentity("Iași, 15 €", $harta, "UTF-8");
echo $codat . "\n";
echo mb_encode_numericentity("Iași", $harta, "UTF-8", true) . "\n";
echo mb_decode_numericentity($codat, $harta, "UTF-8");

Rezultat

Ia&#537;i, 15 &#8364;
Ia&#x219;i
Iași, 15 €

Greșeli frecvente

  • Folosești funcția ca protecție împotriva XSS. Caracterele ASCII (<, >, ghilimele) nu sunt atinse; pentru siguranță folosește htmlspecialchars.

Comenzi înrudite

  • htmlentities / html_entity_decode: Transformă în entități HTML toate caracterele care au o entitate (é devine &eacute;). html_entity_decode face operația inversă.
  • htmlspecialchars: Transformă caracterele speciale HTML în entități, ca textul să fie afișat în siguranță în pagină.
  • mb_ord / mb_chr: mb_ord returnează codul Unicode al unui caracter, iar mb_chr returnează caracterul pentru un cod Unicode.