La fonction strncasecmp() compare deux chaînes. strncasecmp() est similaire à strcasecmp(), à la différence près qu'elle permet de limiter le nombre de caractères utilisés pour comparer Voir la fonction strcasecmp()
La fonction strncasecmp() de PHP est une fonction de chaîne qui permet de comparer deux chaînes de caractères sans tenir compte de la casse. Elle prend en entrée deux chaînes de caractères ainsi qu'un entier qui représente la longueur des chaînes à comparer. Si les deux chaînes sont égales jusqu'à la longueur spécifiée, la fonction renvoie 0. Si la première chaîne est alphabetiquement inférieure à la seconde chaîne (en ignorant la casse), la fonction renvoie un nombre négatif. Si la première chaîne est alphabetiquement supérieure à la seconde chaîne, la fonction renvoie un nombre positif.
Voici la syntaxe de la fonction strncasecmp() :
int strncasecmp ( string $str1 , string $str2 , int $length )
$str1 : la première chaîne à comparer
$str2 : la seconde chaîne à comparer
$length : le nombre de caractères à comparer dans chaque chaîne
La fonction renvoie un entier.
Si $str1 est considérée comme étant "inférieure" à $str2, la fonction renvoie un nombre négatif.
Si $str1 est considérée comme étant "supérieure" à $str2, la fonction renvoie un nombre positif.
Si les deux chaînes sont considérées comme étant égales, la fonction renvoie 0.
Voici un exemple d'utilisation de la fonction strncasecmp() :
$str1 = "Bonjour";
$str2 = "bonjour";
$length = 5;
if (strncasecmp($str1, $str2, $length) == 0) {
echo "Les premiers $length caractères de '$str1' et '$str2' sont égaux (ignorant la casse)";
} else {
echo "Les premiers $length caractères de '$str1' et '$str2' sont différents (ignorant la casse)";
}
Le résultat de ce code sera : "Les premiers 5 caractères de 'Bonjour' et 'bonjour' sont égaux (ignorant la casse)".
Il est important de noter que strncasecmp() est sensible à la locale utilisée. Si vous utilisez une locale qui prend en compte les accents, les chaînes avec des accents seront considérées comme étant différentes même si elles sont égales en ignorant la casse. Pour éviter ce problème, vous pouvez utiliser la fonction mb_strncasecmp() qui prend en compte les encodages multioctets et n'est pas sensible à la locale.
Il est également important de noter que la fonction strncasecmp() n'est pas disponible sur toutes les plateformes. Si vous avez besoin de comparer des chaînes de manière insensible à la casse sur une plateforme qui ne prend pas en charge cette fonction, vous pouvez utiliser la fonction mb_strtolower() pour convertir les chaînes en minuscules avant de les comparer avec la fonction strcmp().
En résumé, la fonction strncasecmp() est une fonction très pratique pour comparer des chaînes de caractères en ignorant la casse et en limitant le nombre de caractères pris en compte. Elle peut être utile dans de nombreux cas, notamment pour la création de scripts de tri ou de recherche de chaînes de caractères.