Comparaison 2 URLs

Résolu
cs_Orlulas Messages postés 2 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 novembre 2009 - 24 nov. 2009 à 16:49
cs_Orlulas Messages postés 2 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 novembre 2009 - 25 nov. 2009 à 10:13
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

cs_Mcjo Messages postés 403 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 3 septembre 2012 2
24 nov. 2009 à 18:08
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";
}

3
cs_Orlulas Messages postés 2 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 novembre 2009
25 nov. 2009 à 10:13
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.
0
Rejoignez-nous