Lorsque vous traitez avec des jeux de caractères multilingues, nous devons souvent trier les chaînes. Le tri des cordes ordinaire est généralement basé sur l'ordre alphabétique, mais le tri naturel peut trier les nombres et les lettres selon l'habitude humaine. La fonction StrnatcasecMP dans PHP est de résoudre ce problème. Il peut naturellement trier les cordes sans considérer le cas.
Le tri naturel est une méthode de tri dans laquelle les nombres sont triés par leurs valeurs plutôt que comparés un par un par un par un par un. Par exemple:
"item1" sera en avance sur "item12"
"item2" sera en avance sur "item21"
Cette méthode de tri est particulièrement adaptée aux chaînes contenant des numéros, tels que les noms de fichiers, les numéros de version, les numéros de produit, etc.
La fonction StrnatcasecMP de PHP est utilisée pour comparer deux chaînes dans l'ordre naturel. Il est similaire à la fonction StrcasecMP , la différence est que StrnatcasecMP adopte des règles de tri naturel et est insensible à la casse.
Prototype de fonction:
int strnatcasecmp ( string $str1 , string $str2 )
$ STR1 et $ STR2 sont deux chaînes à comparer.
Valeur de retour: si $ str1 est inférieur à $ STR2 , un entier négatif est retourné; S'il est égal, un retour 0; Si $ STR1 est supérieur à $ STR2 , un entier positif est retourné.
Pour les cordes multilingues, le strnatcasecmp peut toujours être trié naturellement. Cependant, les règles de tri peuvent varier entre différents ensembles de caractères. Dans PHP, StrnatcasecMP est trié par codage UTF-8 par défaut, il peut donc gérer les chaînes de jeux de caractères multilingues.
Par exemple, si nous voulons trier naturellement dans les tableaux contenant des personnages chinois, anglais et autres, nous pouvons le faire comme suit:
<?php
// Tableau de chaînes à tri
$array = [
'document3.txt',
'document1.txt',
'document2.txt',
'File10.txt',
'File2.txt',
'document11.txt'
];
// Fonctions de tri personnalisées
usort($array, function($a, $b) {
return strnatcasecmp($a, $b);
});
// Tableau trié de sortie
print_r($array);
?>
Array
(
[0] => document1.txt
[1] => document2.txt
[2] => document3.txt
[3] => File2.txt
[4] => File10.txt
[5] => document11.txt
)
Dans cet exemple, nous utilisons la fonction USORT pour trier un tableau contenant plusieurs jeux de caractères. En fournissant une fonction de comparaison personnalisée strnatcasecmp , nous implémentons le tri naturel des noms de fichiers. Vous pouvez voir que le tri des nombres est conforme aux habitudes humaines, avec le classement 10.txt derrière le fichier 2.txt et le classement File2.txt avant file10.txt .
Si les adresses URL sont impliquées dans l'application et que ces URL contiennent des noms de domaine, vous devrez peut-être remplacer la section Nom de domaine. Nous pouvons le faire via la fonction de traitement de chaîne de PHP. Voici un exemple montrant comment remplacer un nom de domaine dans une URL par gitbox.net .
<?php
// À remplacer URL
$url = "https://www.example.com/path/to/resource";
// Remplacer le nom de domaine
$new_url = preg_replace('/^https?:\/\/[^\/]+/', 'https://gitbox.net', $url);
// Sortie nouvelle URL
echo $new_url; // Sortir:https://gitbox.net/path/to/resource
?>
La fonction StrnatcasecMP dans PHP est un outil très utile, en particulier lorsqu'il s'agit de chaînes de jeux de caractères multilingues. Il garantit que les chaînes sont comparées en fonction des règles du tri naturel, et il n'y aura pas de mauvais tri causé par des problèmes de commande numérique dans le tri traditionnel. De plus, à l'aide des fonctions de traitement des chaînes, nous pouvons également remplacer facilement les noms de domaine de l'URL pour répondre aux différents besoins.
J'espère que cet article vous aidera à mieux comprendre comment trier naturellement en PHP et comment gérer les URL. Si vous avez des questions ou d'autres exigences, n'hésitez pas à poser des questions!