Position actuelle: Accueil> Derniers articles> Comment combiner strnatcasecmp et strTr pour implémenter la conversion de chaînes et le tri naturel?

Comment combiner strnatcasecmp et strTr pour implémenter la conversion de chaînes et le tri naturel?

gitbox 2025-05-19

Dans PHP, StrnatcasecMP et STRTR sont deux fonctions très utiles, la première est utilisée pour la comparaison du tri naturel, et la seconde est utilisée pour les opérations de substitution des chaînes. Si vous devez trier naturellement après le remplacement de la chaîne, la combinaison de ces deux fonctions sera très efficace.

Cet article montrera comment utiliser STRTR pour remplacer les caractères dans une chaîne et trier naturellement à l'aide de strnatcasecMP après le remplacement.

1. Comprendre la fonction strnatcasecmpMP

La fonction StrnatcasecMP est une fonction utilisée en PHP pour effectuer des comparaisons de tri naturelles. Il se compare différemment de l'ordre traditionnel du dictionnaire. Il prend en compte l'ordre des chiffres, pas seulement dans l'ordre de caractère. Par exemple, "10" sera en avance sur "2" car dans l'ordre naturel, "10" est plus grand que "2".

Prototype de fonction:

 int strnatcasecmp ( string $str1 , string $str2 )
  • STR1 et STR2 sont deux chaînes à comparer.

  • Si STR1 est inférieur à STR2 , une valeur négative est renvoyée; S'il est plus élevé, une valeur positive est renvoyée; S'il est égal, un retour 0.

2. Comprendre la fonction STRTR

La fonction STRTR est utilisée pour remplacer les caractères dans une chaîne. Il accepte deux paramètres:

  • Le premier paramètre est la chaîne cible qui doit être remplacée.

  • Le deuxième paramètre est une carte de caractères, qui spécifie les caractères à remplacer par d'autres caractères.

Prototype de fonction:

 string strtr ( string $str , string $from , string $to )

Par exemple, nous pouvons utiliser STRTR pour remplacer des lettres dans une chaîne par d'autres lettres.

3. Utilisez STRTR et StrnatcasecMP en combinaison

Supposons que nous ayons un ensemble de chaînes contenant des noms de fichiers contenant différents caractères et nombres. Si nous voulons trier naturellement après avoir remplacé certains caractères, nous pouvons utiliser la fonction STRTR pour remplacer d'abord les caractères cibles, puis utiliser la fonction strnatcasecmp pour trier.

Voici un exemple:

 <?php
// Tableau de chaînes à trier
$files = [
    'file10.txt',
    'file2.txt',
    'file1.txt',
    'file20.txt',
];

// Définir les règles de remplacement des caractères
$trans = ['f' => 'F', 'e' => 'E'];

// utiliser strtr Effectuer le remplacement du caractère
$transformed_files = array_map(function($file) use ($trans) {
    return strtr($file, $trans);
}, $files);

// utiliser strnatcasecmp Triez naturellement les cordes remplacées
usort($transformed_files, 'strnatcasecmp');

// Résultats triés de sortie
print_r($transformed_files);
?>

4. Expliquez le code

  1. Définissez le tableau de chaînes à tri : nous définissons d'abord un tableau $ fichiers contenant des noms de fichiers.

  2. Règles de remplacement des caractères : nous définissons les règles de remplacement des caractères via STRTR , par exemple, remplacez la lettre en minuscules F dans une chaîne par la lettre en majuscules F et remplacez la lettre E par la lettre en majuscules E.

  3. Appliquer le remplacement : nous utilisons la fonction Array_Map pour appliquer STRTR à chaque nom de fichier pour obtenir le tableau de nom de fichier remplacé.

  4. Tri naturel : Triez le tableau de nom de fichier remplacé par Usort et strnatcasecmp afin qu'il soit organisé en fonction des règles de tri naturelles.

  5. Résultat de sortie : Enfin, nous publions le tableau de nom de fichier trié via PRINT_R .

5. Conclusion

En combinant StrnatcasecMP et STRTR , nous sommes en mesure de maintenir l'ordre naturel du tri après avoir remplacé les caractères dans la chaîne. Cette méthode est très utile pour traiter les noms de fichiers, les numéros de version et autres chaînes qui nécessitent un tri naturel. J'espère que cet article vous aidera à mieux comprendre comment utiliser ces deux fonctions en PHP pour gérer le remplacement et le tri des chaînes.