MB_DECODE_NUMERICEntity () est une fonction de traitement de chaîne multi -yte (fournie par l'extension MBSTring ) et sa fonction consiste à décoder la forme numérique de l'entité HTML (telle que ' ) dans la chaîne dans les caractères correspondants. Contrairement à la fonction traditionnelle html_entity_decode () , mb_decode_numericalEntity () prend en charge plus de jeux de caractères et a une meilleure gestion des caractères multi -ytet.
Le prototype de cette fonction est le suivant:
<span><span><span class="hljs-title function_ invoke__">mb_decode_numericentity</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$map</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$encoding</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$ String : la chaîne à décoder.
$ map : un tableau qui définit la gamme dans laquelle les entités numériques doivent être décodées.
$ Encodage : spécifie le codage des caractères (comme UTF-8 ou ISO-8859-1 ).
Supposons que vous ayez une chaîne contenant du codage d'entité HTML, comme suit:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Hello &#20844;&#22909;!"</span></span><span>;
</span></span>
Cette chaîne contient le codage d'entité HTML du caractère chinois "Bonjour". Maintenant, nous voulons le décoder en caractères originaux.
<span><span><span class="hljs-comment">// décodageHTMLEntité numérique</span></span><span>
</span><span><span class="hljs-variable">$decoded_str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_decode_numericentity</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-number">0x80</span></span><span>, </span><span><span class="hljs-number">0x10FFFF</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0xFFFF</span></span><span>), </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decoded_str</span></span><span>; </span><span><span class="hljs-comment">// Sortir: Hello Bonjour!</span></span><span>
</span></span>
Dans cet exemple, nous utilisons la fonction mb_decode_numericalEntity () et passons dans un tableau de plage de caractères [0x80, 0x10ffff, 0, 0xffff] , qui représente toutes les plages de caractères Unicode valides. La chaîne décodée est "Bonjour!" .
Le paramètre MAP $ définit la plage d'une entité numérique. Il s'agit d'un tableau de quatre éléments. Le format du tableau est le suivant:
<span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-variable">$from</span></span><span>, </span><span><span class="hljs-variable">$to</span></span><span>, </span><span><span class="hljs-variable">$from2</span></span><span>, </span><span><span class="hljs-variable">$to2</span></span><span>);
</span></span>
$ de et $ à : les valeurs de début et de fin de la première plage.
$ From2 et $ à 2 : les valeurs de début et de fin de la deuxième plage (le cas échéant).
Dans une utilisation réelle, il est courant de décoder toutes les entités HTML, de sorte qu'une grande gamme de caractères peut être utilisée pour écraser tous les caractères Unicode.
MB_DECode_numericality () prend en charge plusieurs codages de caractères, et différents formats de codage peuvent être sélectionnés en fonction des besoins réels. Si votre application est principalement destinée aux environnements multi-langues, il est recommandé d'utiliser le codage UTF-8 , qui peut gérer des ensembles de caractères dans toutes les langues.
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"&#20844;&#22909; &#12371;&#12395;&#12385;"</span></span><span>; </span><span><span class="hljs-comment">// Bonjour こんにちは</span></span><span>
</span><span><span class="hljs-variable">$decoded_str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_decode_numericentity</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-number">0x80</span></span><span>, </span><span><span class="hljs-number">0x10FFFF</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0xFFFF</span></span><span>), </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decoded_str</span></span><span>; </span><span><span class="hljs-comment">// Sortir: Bonjour こんにちは</span></span><span>
</span></span>
En plus des entités numériques (comme & # 123; ), les entités HTML peuvent également apparaître comme des noms de caractères (tels que & lt; ). MB_DECode_numericality () est principalement utilisé pour gérer les entités numériques, mais si votre chaîne contient des entités de nom de caractère, vous devrez peut-être utiliser la fonction html_entity_decode () à utiliser avec lui.
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Hello &lt;b&gt;World&lt;/b&gt;!"</span></span><span>;
</span><span><span class="hljs-variable">$decoded_str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">html_entity_decode</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, ENT_QUOTES, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decoded_str</span></span><span>; </span><span><span class="hljs-comment">// Sortir: Hello <b>World</b>!</span></span><span>
</span></span>
MB_DECODE_NUMERICEntity () nécessite une prise en charge des extensions de MbString , veuillez donc vous assurer que les extensions MBSTring sont installées et activées dans votre environnement PHP avant de les utiliser.
Cette fonction est principalement utilisée pour décoder les entités numériques, et d'autres méthodes sont nécessaires pour décoder les entités de nom de caractère.
Le codage des caractères doit être cohérent avec le codage réellement utilisé par la chaîne, sinon un code brouillé peut se produire.
MB_DECode_numericality () est un outil très pratique, en particulier lorsqu'il s'agit de chaînes avec des caractères spéciaux. À travers elle, nous pouvons facilement décoder les entités numériques HTML et restaurer les caractères originaux. Qu'il s'agisse de support multilingue ou d'entité HTML en codage, MB_DECODE_NUMERICEMENTITY () peut nous aider à gérer efficacement les données des caractères.
En utilisant cette fonction raisonnablement, nous pouvons mieux traiter et afficher des données avec des caractères spéciaux dans les applications PHP, l'amélioration de l'expérience utilisateur et la stabilité du système.