Comparaison 2 URLs [Résolu]

Signaler
Messages postés
2
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
25 novembre 2009
-
Messages postés
2
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
25 novembre 2009
-
Bonjour @tous et @toutes,
Depuis plusieurs jours maintenant je bute sur un script en apparence tout bête : dans ma base de données je dispose d'un champ avec une URL de sauvegardée sous sa forme complète (exemple : "http://www.exemple.com/test"). Je demande ensuite à l'utilisateur de saisir une URL, et je vérifie si cette dernière est présente dans la base de données, et c'est là que le bas blesse car le script se révèle tout de suite très sensible ! L'idéal c'est que les exemples ci-dessous soient considérés comme équivalents :

exemple.com/test
exemple.com/Test
exemple.com/test/
www.exemple.com/test
www.exemple.com/test/
http://www.exemple.com/test/
https://www.exemple.com/test
https://www.exemple.com/test/
etc...

J'ignore si j'ai correctement expliqué mon problème, mais j'aurais vraiment besoin d'un comparateur d'URL basé sur une URL de référence (pour savoir si OUI ou NON elle est équivalente à l'URL testée).
Merci d'avance à tout ceux qui répondront à ce message. Bonne journée.
Orlulas

2 réponses

Messages postés
403
Date d'inscription
dimanche 12 août 2001
Statut
Membre
Dernière intervention
3 septembre 2012
2
Si je peux me permettre une première réflexion
Les url :
exemple.com/Test
exemple.com/test
serons différentes sur un serveur de type Unix

Sinon on peut faire ça de façon très bourrin avec une petite fonction simple, mais on pourrez faire beaucoup mieux avec les expressions régulières

function cleanUrl($url)
{

$arrayStarts = array("http://", "https://", "www.");

if (substr($url, -1, 1) "/") $url substr($url, 0, strlen($url) - 1);

foreach ($arrayStarts as $value)
{
//le "===" est très important
if (strpos($url, $value) === 0)
{

$url = substr($url, strlen($value));
}
}

//on met en miniscule le domaine

$url = explode("/",$url);
$url[0] = strtolower($url[0]);
$url = implode("/", $url);

return "http://www.$url";
}

Messages postés
2
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
25 novembre 2009

D'accord merci à toi McJo, la fonction que tu as écrite m'as donné un point de départ efficace et simple pour effectuer ce script de comparaison.
Je te souhaites de passer une agréable journée. Amicalement.