2010-11-21 8 views
0
$value = 'http://www.mydomain.com/this-is-page-one' 

J'ai un champ dans ma table mysql appelé "urls" qui stocke les différentes urls à l'intérieur, comme:match urls mysql

http://www.bdsada.com/dsadsfsaf 
http://www.comddsad.com/dsadacsdfs 

et ainsi de suite

Je veux correspondent le mieux à ma valeur avec des urls. - faire une requête sql Peut-être le nombre de lettres répétées.

S'il vous plaît donner un exemple réel .... pleaseee

+1

http://dev.mysql.com/doc/refman/5.1/fr/string-comparison-functions.html#operator_like –

+1

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

+0

Basé sur la distance de Levenshtein – webmasters

Répondre

1

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.