MB_SUBSTITUTE_CHARACTER () est une fonction de traitement de chaîne multi -yte en PHP qui définit ou obtient des caractères de substitution lorsque des caractères illégaux sont rencontrés. Les caractères illégaux se réfèrent généralement à des caractères qui ne peuvent pas être représentés dans le codage actuel des caractères, ce qui est très courant lorsqu'il traitait des ensembles de caractères de différentes langues.
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$substitute_character</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>): </span><span><span class="hljs-keyword">mixed</span></span><span>
</span></span>
$ substitute_character : spécifie un caractère ou un codage alternatif du caractère alternatif. Lorsqu'il est réglé sur NULL , le caractère de substitut actuel est retourné.
Valeur de retour: renvoie le codage du caractère de substitut actuel.
Dans les environnements multi-langues, un décrochage de codage est souvent rencontré pendant l'entrée et la sortie des données. Par exemple, si vous essayez de transférer une chaîne contenant certains caractères vers un système qui ne prend pas en charge ce jeu de caractères, ou si le programme peut lancer une erreur lors de l'analyse des données contenant des caractères illégaux. Pour éviter ces problèmes, nous pouvons utiliser mb_substitute_character () pour définir un caractère de substitut pour s'assurer que les caractères illégaux peuvent être gérés correctement.
Le caractère de substitut actuel peut être obtenu en ne faisant passer aucun argument via la fonction mb_substitute_character () .
<span><span><span class="hljs-variable">$current_substitute</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Encodage de caractères alternatifs actuel: "</span></span><span> . </span><span><span class="hljs-variable">$current_substitute</span></span><span>;
</span></span>
Par défaut, MB_Substitute_Character () renvoie une valeur codée représentant un caractère alternatif. D'une manière générale, le caractère de substitut par défaut est 0xFFFD , qui est le "caractère de substitution" défini dans la norme Unicode.
Pour définir un nouveau caractère de substitut, vous pouvez passer le codage du caractère de substitut en tant que paramètre à MB_Substitute_Character () . Par exemple, nous pouvons le définir sur un caractère spécifique, comme un point d'interrogation ( ? ):
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);
</span></span>
À ce stade, tous les personnages illégaux seront remplacés par des points d'interrogation pendant le processus de conversion.
Le scénario d'application le plus courant pour MB_Substitute_Character () est lors de l'utilisation de MB_CONVERT_ENCODING () pour la conversion de codage. Supposons que vous souhaitiez convertir une chaîne contenant des caractères illégaux d'un codage à un autre, vous pouvez définir des caractères alternatifs pour vous assurer qu'aucune erreur n'est lancée pendant le processus de conversion.
<span><span><span class="hljs-comment">// Définissez le caractère alternatif à des questions</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);
</span><span><span class="hljs-comment">// Convertir le codage et remplacer les caractères illégaux</span></span><span>
</span><span><span class="hljs-variable">$converted_str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$input_string</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'ISO-8859-1'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$converted_str</span></span><span>;
</span></span>
Dans cet exemple, si $ input_string contient des caractères illégaux, ils seront convertis en un point d'interrogation.
En plus d'utiliser le caractère de substitut par défaut ( 0xFFFD ) ou la marque d'interrogation ( ? ), Vous pouvez également le définir sur n'importe quel caractère. Par exemple, utilisez * comme caractère alternatif:
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'*'</span></span><span>);
</span></span>
Cela peut vous aider à marquer plus clairement l'emplacement des personnages illégaux dans certains cas.
Vous devez choisir les caractères alternatifs appropriés en fonction de vos besoins réels. Si les caractères de substitution sont visibles par l'utilisateur, il est préférable de choisir un symbole bien visible et rare, tel que ? ou * .
Lors de la gestion de l'encodage, assurez-vous que le codage cible prend en charge les caractères alternatifs que vous choisissez. Si le caractère que vous avez sélectionné ne peut pas être représenté dans le codage cible, il peut toujours être remplacé par le caractère de substitut par défaut.
Lors du traitement des données par lots, en particulier lorsque les données sont récupérées à partir d'entrées externes ou de sources de données non fiables, la définition d'un caractère alternatif approprié peut efficacement éviter les erreurs de corruption des données ou de programme.
La fonction MB_Substitute_Character () nous fournit un contrôle flexible lors de la conversion de codage de chaîne. Lorsque nous rencontrons des caractères illégaux, nous pouvons choisir de les remplacer par un caractère explicite, ce qui évite les plantages de programme ou la sortie d'erreur. La maîtrise de l'utilisation de cette fonction peut non seulement améliorer notre capacité à gérer des textes multilingues, mais également améliorer la robustesse du programme. En définissant rationnellement des caractères alternatifs, les programmeurs peuvent éviter efficacement les difficultés causées par un codage incohérent.