Si vous connaissez les bonnes Url pourrait être, vous pouvez utiliser:
levenshtein($givenURL, $possibleURL)
Exemple de PHP docs, commentaires supprimés pour des raisons de concision:
$input = 'carrrot';
$words = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato');
$shortest = -1;
foreach ($words as $word) {
$lev = levenshtein($input, $word);
if ($lev == 0) {
$closest = $word;
$shortest = 0;
break;
}
if ($lev <= $shortest || $shortest < 0) {
$closest = $word;
$shortest = $lev;
}
}
echo $shortest == 0 ? "Exact match found: $closest\n" : "Did you mean: $closest?\n";
Sorties:
Mot d'entrée: carrrot
Vouliez-vous dire: carotte?
Ce est bon quand vous pensez que les gens peuvent avoir omis une lettre ou mettre un de plus, mais il peut tomber à court quand les gens vraiment ne sais pas comment épeler un mot et est venu avec quelque chose de créatif!
Si vous préférez l' soundex()
route, prendre un coup d'oeil à l' metaphone()
fonction.
J'aime l'idée d'utiliser metaphone()
côté levenshtein()
ou similar_text()
, car il renvoie à une représentation phonétique de la parole, et vous voulez toujours de voir comment elle est à votre original.
Exemples:
metaphone('name') = NM
metaphone('naaaaaameeeeeeee') = NM
metaphone('naiym') = NM
metaphone('naiyem') = NYM
Alors que beaucoup de fautes d'orthographe sera de retour identiques, le dernier exemple montre que vous avez vraiment encore envie de trouver la correspondance la plus proche avec quelque chose comme levenshtein()
Pour plus d'efficacité, si vous utilisez un autre 404 fichier où le réécrit essayé de correspondre à ce modèle et a échoué, que vous utilisez pour le reste du site, il ne devrait pas vraiment être une surcharge massive.
Si vous obtenez le même 404 de la même référent beaucoup, (et ne peut pas changer le lien) il pourrait être intéressant de simplement mettre un statique de la réécriture dans ce cas.