Dans PHP, les fonctions ord () et strTr () sont des outils très pratiques qui peuvent aider les développeurs à améliorer l'efficacité du traitement des caractères. Ord () peut convertir les caractères en codes ASCII correspondants, tandis que STRTR () fournit un moyen concis de remplacer les caractères des chaînes. Cet article explorera comment combiner ces deux fonctions pour le remplacement de la cartographie des caractères et introduira certaines méthodes dans des applications pratiques.
La fonction ord () est une fonction intégrée PHP qui renvoie la valeur de code ASCII d'un caractère. Par exemple:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-string">'A'</span></span><span>); </span><span><span class="hljs-comment">// Sortir: 65</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-string">'a'</span></span><span>); </span><span><span class="hljs-comment">// Sortir: 97</span></span><span>
</span></span>
Avec ord () , vous pouvez facilement obtenir du code ASCII pour un caractère. Cela offre une fonction très basique mais puissante pour la comparaison des caractères, la conversion et d'autres opérations.
strTr () est une fonction qui remplace les caractères spécifiques dans une chaîne. Il a deux utilisations courantes:
Remplacement des caractères : remplacez les caractères de la chaîne source par des caractères cibles via une table de mappage de caractères.
Remplacement de la plage de caractères : remplacez tous les caractères dans la plage spécifiée.
Par exemple, utilisez une carte de caractères pour le remplacement:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$trans</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"h"</span></span><span>, </span><span><span class="hljs-string">"j"</span></span><span>); </span><span><span class="hljs-comment">// Volonté 'h' Remplacer par 'j'</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$trans</span></span><span>; </span><span><span class="hljs-comment">// Sortir: jello</span></span><span>
</span></span>
Dans cet exemple, nous utilisons STRTR () pour remplacer directement les caractères de la chaîne. strTr () est très efficace lorsqu'il s'agit de substitutions de caractères à petite portée.
La combinaison ORD () avec STRTR () peut gérer des tâches de mappage de caractères plus complexes. Nous pouvons utiliser la fonction ord () pour obtenir le code ASCII du caractère, puis utiliser strtr () pour remplacer le caractère. Cette méthode de combinaison est particulièrement utile dans certains scénarios où le codage des caractères est nécessaire.
Supposons que nous ayons une chaîne qui nécessite un remplacement de caractères basé sur la valeur du code ASCII. Vous pouvez utiliser ord () pour obtenir le code ASCII pour chaque caractère, puis le remplacer conditionnellement en fonction de ces valeurs de code. Par exemple:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$trans</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"h"</span></span><span>, </span><span><span class="hljs-string">"j"</span></span><span>); </span><span><span class="hljs-comment">// Remplacement direct</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$trans</span></span><span>; </span><span><span class="hljs-comment">// Sortir: jello</span></span><span>
</span><span><span class="hljs-comment">// Une autre façon:basé sur ord() Effectuer la cartographie des personnages</span></span><span>
</span><span><span class="hljs-variable">$new_str</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-title function_ invoke__">str_split</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>) </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$char</span></span><span>) {
</span><span><span class="hljs-variable">$ascii</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-variable">$char</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$ascii</span></span><span> == </span><span><span class="hljs-number">104</span></span><span>) { </span><span><span class="hljs-comment">// ASCII La valeur est 104 Il est temps 'h'</span></span><span>
</span><span><span class="hljs-variable">$new_str</span></span><span> .= </span><span><span class="hljs-string">'j'</span></span><span>; </span><span><span class="hljs-comment">// Remplacer par 'j'</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-variable">$new_str</span></span><span> .= </span><span><span class="hljs-variable">$char</span></span><span>; </span><span><span class="hljs-comment">// Gardez les personnages originaux</span></span><span>
}
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$new_str</span></span><span>; </span><span><span class="hljs-comment">// Sortir: jello</span></span><span>
</span></span>
Dans cet exemple, la fonction ord () est utilisée pour obtenir le code ASCII du caractère et déterminer s'il faut remplacer le caractère en fonction de ce code.
Dans certains cas, nous devrons peut-être faire une plus large gamme de substitutions de caractères, comme le remplacement d'un ensemble de caractères ou d'un alphabet entier. strTr () prend en charge le passage de plusieurs caractères à la fois pour les remplacer. À l'heure actuelle, un mappage de caractères peut être généré en combinant la fonction ord () , qui peut automatiquement traiter le remplacement d'un grand nombre de caractères:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"abcdefg"</span></span><span>;
</span><span><span class="hljs-variable">$map</span></span><span> = [];
</span><span><span class="hljs-comment">// Créer une relation de cartographie:Volonté小写字母 a-z Remplacer par A-Z</span></span><span>
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">97</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> <= </span><span><span class="hljs-number">122</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
</span><span><span class="hljs-variable">$map</span></span><span>[</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$i</span></span><span>)] = </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$i</span></span><span> - </span><span><span class="hljs-number">32</span></span><span>); </span><span><span class="hljs-comment">// ASCII 码差La valeur est 32(Minuscules en majuscules)</span></span><span>
}
</span><span><span class="hljs-variable">$trans</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$map</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$trans</span></span><span>; </span><span><span class="hljs-comment">// Sortir: ABCDEFG</span></span><span>
</span></span>
Dans cet exemple, nous générons d'abord une carte de caractères à travers une boucle, convertissant des lettres minuscules en lettres majuscules. Ensuite, utilisez STRTR () pour remplacer tous les caractères à la fois.
La combinaison d' Ord () et de StrTR () peut facilement implémenter certains algorithmes de cryptage et de décryptage de caractères simples. Par exemple, vous pouvez obtenir le code ASCII du caractère via ord () , le crypter (comme l'ajout d'une valeur fixe), puis le remplacer par strTr () :
<span><span><span class="hljs-comment">// Cryptage de caractères simples:Chaque personnage est ASCII Code plus 1</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$encrypted</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-title function_ invoke__">str_split</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>) </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$char</span></span><span>) {
</span><span><span class="hljs-variable">$encrypted</span></span><span> .= </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-variable">$char</span></span><span>) + </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// VolontéChaque personnage est ASCII Code plus 1</span></span><span>
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$encrypted</span></span><span>; </span><span><span class="hljs-comment">// Sortir: ifmmp</span></span><span>
</span></span>
Dans HTML, certains personnages doivent être échappés, comme < à & lt; , > à & gt; . En utilisant ord () et strtr () , vous pouvez implémenter le traitement des caractères d'échappement personnalisé:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"<div>Hello World</div>"</span></span><span>;
</span><span><span class="hljs-variable">$trans</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, [
</span><span><span class="hljs-string">"<"</span></span><span> => </span><span><span class="hljs-string">"&lt;"</span></span><span>,
</span><span><span class="hljs-string">">"</span></span><span> => </span><span><span class="hljs-string">"&gt;"</span></span><span>,
</span><span><span class="hljs-string">"&"</span></span><span> => </span><span><span class="hljs-string">"&amp;"</span></span><span>
]);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$trans</span></span><span>; </span><span><span class="hljs-comment">// Sortir: &lt;div&gt;Hello World&lt;/div&gt;</span></span><span>
</span></span>
Dans cet exemple, nous remplaçons directement plusieurs caractères spéciaux par STRTR () pour éviter le problème de l'injection HTML.
En combinant ORD () et STRTR () , les développeurs PHP peuvent gagner une plus grande flexibilité et efficacité dans le remplacement de la cartographie des caractères. Les deux fonctions peuvent jouer un rôle important, qu'ils soient cryptés et déchiffrés, remplacés de caractère ou générer des tables de mappage de caractères dynamiques. Comprendre et maîtriser leur utilisation peut vous aider à gérer divers problèmes de conversion de caractère plus efficacement.