Je ne sais pas exactement ce que vous entendez par « meilleur match ». Dites que vous stockez les URL dans la base de données comme indiqué ci-dessus (http://www.website.com/extension). En outre, l'entrée peut inclure ou non les 'http: //', 'www.' Ou d'autres variables GET supplémentaires dans l'URL. Avant de soumettre la chaîne pour la requête de la base de données, je ferais ce qui suit:
Pour supprimer le 'http: //' ou 'https: //' de l'URL.
$valueStrip = explode("//",$value);
$value = $valueStrip[1];
Pour enlever toute obtenir les variables
$valueStrip = explode("?",$value);
$value = $valueStrip[0];
Aussi, assurez-vous que vous nettoyez pour une attaque par injection SQL, cela devrait fonctionner
$value = mysql_real_escape_string($value);
supposons que 'url' est le nom de la table et 'domainName' est le nom de la colonne pour le nom de domaine réel. Ainsi, votre requête pourrait ressembler à ceci
$query = mysql_fetch_array(mysql_query("SELECT url FROM domainName WHERE url LIKE '%$value%'"));
Je dois souligner que je ne l'ai pas testé le code et il pourrait être rendu plus efficace.
http://dev.mysql.com/doc/refman/5.1/fr/string-comparison-functions.html#operator_like –
Quand vous dites "meilleur match", voulez-vous dire "match" comme * www.bdsada. com * avec une entrée de * bdsad *, ou voulez-vous dire le meilleur match basé sur la distance de Levenshtein? Pouvez-vous donner un exemple d'entrée par rapport à la production attendue? – netcoder
Basé sur la distance de Levenshtein – webmasters