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și, 15 €
Iaș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ștehtmlspecialchars.
Comenzi înrudite
htmlentities / html_entity_decode: Transformă în entități HTML toate caracterele care au o entitate (é devine é). 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.