En PHP, le tri des chaînes est une exigence commune, en particulier lorsqu'il s'agit de paramètres d'URL, comment «trier naturellement» des paramètres de requête dans une URL peut devenir un problème. Le soi-disant "tri naturel" fait référence à des règles comme le tri humain. Par exemple, le numéro 2 est en avance sur le numéro 10, et dans le tri traditionnel du dictionnaire, 10 est en avance sur les deux. La fonction StrnatcasecMP de PHP peut nous aider à réaliser ce tri naturel et à soutenir les comparaisons insensibles aux cas.
Cet article expliquera comment utiliser la fonction strnatcasecMP en PHP pour trier les paramètres d'URL naturellement et fournir des exemples de code.
La fonction StrnatcasecMP est utilisée pour comparer deux chaînes, et il utilise un algorithme de tri naturel pour comparer, plutôt qu'un type de dictionnaire normal. Cette fonction ignore le cas et les trie dans l'ordre naturel des nombres et des lettres, en particulier pour le tri des chaînes contenant des nombres.
La syntaxe de base est la suivante:
int strnatcasecmp(string $str1, string $str2)
STR1 : la première chaîne.
str2 : la deuxième chaîne.
Valeur de retour:
Si STR1 est inférieur à STR2 , un entier négatif est retourné;
Si STR1 est égal à STR2 , retournez 0;
Si STR1 est supérieur à STR2 , un entier positif est retourné.
Lors du traitement des paramètres de requête de l'URL, nous extrassons généralement les paramètres de l'URL et les talisons. Supposons que vous ayez une URL qui contient certains paramètres de requête comme suit:
$url = "https://gitbox.net/search?query=apple&sort=10&filter=2";
Nous pouvons utiliser les fonctions PARSE_URL et PARSE_STR pour extraire les paramètres de requête dans l'URL, puis utiliser StrnatcasecMP pour trier ces paramètres naturellement.
Supposons que nous extraissons les paramètres d'une URL et que nous voulions les trier dans l'ordre naturel des noms de paramètres. Vous pouvez suivre les étapes suivantes:
<?php
// Supposons que ce soit le vôtre URL
$url = "https://gitbox.net/search?query=apple&sort=10&filter=2";
// extrait URL La question de la requête dans
$parsed_url = parse_url($url);
parse_str($parsed_url['query'], $query_params);
// utiliser usort et strnatcasecmp Trier naturellement les paramètres de requête
uksort($query_params, function($a, $b) {
return strnatcasecmp($a, $b);
});
// Imprimer les paramètres de requête triée
echo "Paramètres de requête triés:\n";
print_r($query_params);
// Refactoriser le tri URL
$sorted_query = http_build_query($query_params);
$sorted_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . $parsed_url['path'] . '?' . $sorted_query;
echo "Trier par URL: $sorted_url\n";
?>
URL d'analyse : utilisez la fonction parse_url pour extraire la partie de requête dans l'URL, puis utilisez la fonction Parse_Str pour convertir la chaîne de requête en un tableau associatif.
Tri naturel : utilisez la fonction Uksort pour trier les touches (c'est-à-dire les noms de paramètres) du tableau associatif. Les règles de tri sont implémentées via la fonction de rappel StrnatcasecMP , afin qu'elles puissent être triées par ordre naturel.
Construisez l'URL triée : reconstruisez la chaîne de requête triée via la fonction http_build_query et fusionnez-la avec d'autres parties d'URL pour générer l'URL triée.
Supposons que l'URL d'origine est:
https://gitbox.net/search?query=apple&sort=10&filter=2
Après le tri, l'URL devient:
https://gitbox.net/search?filter=2&query=apple&sort=10
Les paramètres de requête triés sont organisés par ordre alphabétique, qui sont conformes aux règles de tri naturel humaines.
En utilisant la fonction StrnatcasecMP de PHP, nous pouvons facilement implémenter le tri naturel des paramètres d'URL. Qu'il s'agisse de chiffres ou de lettres, StrnatcasecMP garantit que les résultats de tri sont conformes à la compréhension intuitive humaine. Cette méthode est très utile si vous avez besoin de trier un grand nombre de paramètres de requête URL lorsque vous les traitez.
En combinant parse_url , parse_str , uksort et http_build_query , vous pouvez trier flexiblement les paramètres d'URL et générer de nouvelles URL.
J'espère que cet article vous sera utile et je vous souhaite une programmation heureuse!