J'ai besoin de comparer une chaîne saisi d'une URL, une liste des villes dans un DB MySQL, en utilisant PHPComment générer par programme un tableau de toutes les permutations d'un modèle de chaîne?
SELECT 'city' WHERE 'city' IN (" . $citynameArray . ") LIMIT 1;
$citynameArray
est d'être la liste de toutes les permutations possibles de $cityname
, où $cityname
peut être jusqu'à 5 chaînes séparées par des traits d'union, MAIS 'city' peut utiliser des espaces OU des tirets pour séparer chaque chaîne.
donc 'ville' peut ressembler à un de ces:
- chaîne string string
- chaîne de chaîne de chaîne chaîne de chaîne de chaîne de chaîne chaîne de chaîne de chaîne de chaîne de chaîne
- chaîne de caractères
- string-string-string
- chaîne-chaîne-chaîne-chaîne
- chaîne-chaîne-chaîne-chaîne-chaîne
- string-string
- string-string
- chaîne chaîne chaîne-chaîne chaîne
- string- string-string
- chaîne string-string string-string string
- string-string-string
- chaîne-chaîne chaîne-chaîne
- string-chaîne-chaîne
- chaîne-chaîne chaîne de chaîne chaîne
- chaîne-chaîne-chaîne chaîne chaîne
- string-chaîne-chaîne-chaîne
... et ainsi de suite, jusqu'à un maximum de 5 cordes séparées
Dans la grande majorité des cas cependant, « ville » est soit:
- chaîne
- chaîne chaîne
- chaîne-chaîne
ou, moins fréquente:
- string-string
- chaîne-chaîne chaîne
Ma question alors, comment puis-je générer le tableau? Et, en utilisant 'LIMIT 1'
, la requête s'arrêtera-t-elle en boucle dans le tableau dès qu'un résultat est trouvé?
Je vous remercie des idées,
salutations
GJ
Vous devriez vraiment normaliser vos données d'entrée et votre base de données, car une telle requête peut facilement être une surcharge pour votre base de données. – Fge
Pourrions-nous voir quelques exemples de données qui apparaissent réellement dans la base de données et dans l'URL? D'une part, lorsque vous écrivez (par exemple) "string string-string", il n'est pas clair s'il y a un ordre qui compte. D'autre part, nous ne pouvons pas voir le format des données dans la colonne ville et (comme Fge le dit) il peut y avoir une meilleure façon de structurer les données. – outis
Soit de normaliser vos données, comme le suggère @Fge, soit d'utiliser un peu de recherche en texte intégral. Votre recherche devrait être exacte (normalisée) ou floue ("recherche de type Google"), et non brute. – deceze