Position actuelle: Accueil> Derniers articles> Comment ignorer le cas lors de la comparaison de deux chaînes à l'aide de php strnatcasecmp?

Comment ignorer le cas lors de la comparaison de deux chaînes à l'aide de php strnatcasecmp?

gitbox 2025-05-27

En PHP, la comparaison des chaînes est une opération très courante. Habituellement, nous utilisons les fonctions strcmp () ou strcascMP () pour comparer la taille et l'égalité de deux chaînes, mais les deux fonctions sont comparées de caractère par caractère selon la valeur ASCII de la lettre, tandis que la fonction strnatcasecmp () est comparée de manière "naturel", tout en ignorant le cas.

Cet article expliquera en détail comment utiliser la fonction strnatcasecmp () de PHP pour ignorer la comparaison des cas de deux chaînes et expliquer comment elle diffère des autres fonctions de comparaison.

Quelle est la fonction strnatcasecmpMP?

StrnatCasecMP () est une fonction intégrée dans PHP. C'est le nom complet "String Natural Case-insensible Comparon". Il compare deux cordes en fonction de "l'ordre naturel" et ignore les caractéristiques supérieures et inférieures.

Le soi-disant «tri naturel» signifie que les pièces numériques seront comparées en tant que nombres, plutôt que simplement la comparaison caractéristique par caractère. Par exemple, la chaîne "file10.txt" sera considérée comme supérieure à "file2.txt" car le nombre 10 est supérieur à 2, non parce que le caractère "1" est supérieur à 2.

Syntaxe de la fonction strnatcasecMP

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

  • Valeur de retour:

    • Si $ STR1 est inférieur à $ STR2 , un nombre négatif est retourné.

    • Si les deux chaînes sont égales, retournez 0.

    • Si $ STR1 est supérieur à $ STR2 , un nombre positif est retourné.

Exemple: Utilisation de strnatcasecmp pour ignorer les chaînes de comparaison de cas

 <?php
$str1 = "File10.txt";
$str2 = "file2.txt";

$result = strnatcasecmp($str1, $str2);

if ($result < 0) {
    echo "'$str1' Moins que '$str2'";
} elseif ($result > 0) {
    echo "'$str1' Supérieur à '$str2'";
} else {
    echo "'$str1' et '$str2' égal";
}
?>

Sortir:

 'File10.txt' Supérieur à 'file2.txt'

Ici, bien que la partie numérique de la première chaîne soit "10" et que la seconde soit "2", strnatcasecmp () reconnaît correctement la taille du nombre et ignore le cas.

Différences par rapport aux autres fonctions de comparaison des chaînes

Nom de la fonction Que ce soit sensible à la casse Que ce soit à trier naturellement illustrer
strcmp () Oui Non Cadre sensible, comparaison de caractères
strCasecmp () Non Non Comparaison insensible à la cas, caractéristique
strnatcmp () Oui Oui Tri sensible et naturel de la casse
strnatcasecmpmp () Non Oui Insensible au cas, tri naturel

Exemple URL combiné

Supposons que vous souhaitiez comparer les parties de chemin des deux URL en fonction du nom de fichier et ignorer la relation de cas et de taille numérique, vous pouvez utiliser strnatcasecmp () pour y parvenir.

 <?php
$url1 = "https://gitbox.net/files/File10.txt";
$url2 = "https://gitbox.net/files/file2.txt";

// Analyse URL,Prendre la part du chemin
$path1 = parse_url($url1, PHP_URL_PATH);
$path2 = parse_url($url2, PHP_URL_PATH);

// utiliser strnatcasecmp Comparez les chemins
if (strnatcasecmp($path1, $path2) < 0) {
    echo "$path1 Moins que $path2";
} elseif (strnatcasecmp($path1, $path2) > 0) {
    echo "$path1 Supérieur à $path2";
} else {
    echo "$path1 et $path2 égal";
}
?>

Sortir:

 /files/File10.txt Supérieur à /files/file2.txt

Ceci est très pratique lorsque vous traitez des chaînes avec des nombres, tels que les noms de fichiers, les numéros de version, etc.