Créer de belles URL à partir d'un texte en Ruby
Par Bounga le samedi, 10 juin 2006, 17:58 - Trucs et astuces - Lien permanent
Suite à une discussion sur #rubyonrails.fr@freenode.net, j'ai découvert un morceau de code sympa et bien pratique pour qui veut construire une URL qui tient la route à partir d'un titre ou d'un texte.
require 'iconv'
def build_nice_url(str)
str = Iconv.new('us-ascii//TRANSLIT', 'utf-8').iconv(str).strip.downcase
str = str.gsub(/[^a-z0-9\-\.,\*]/, '-').gsub(/([\-\.,\*]){2,}/, '\1').gsub(/^[^a-z0-9]|[^a-z0-9]$/, '')
end
petite explication pour les néophytes :
- la chaîne passée en argument est convertie en chaîne ASCII valide grâce à ICONV
- les espaces sont enlevés
- la chaîne est passée en minuscules
- tous les caractères qui ne sont pas
- des lettres de l'alphabet
- des chiffres
- -
- .
- ,
- *
- les caractères
- -
- .
- ,
- *
- et finalement on enlève les caractères non-pertinents qui pourraient se trouver en début et fin de chaîne
Un petit exemple d'utilisation maintenant :
build_nice_url("$*mon texte avec des virgules, points., accent éàû et répétition----hop !--")
=> "mon-texte-avec-des-virgules-points-accent-eau-et-repetition-hop"
Il ne vous reste plus qu'à intégrer ça dans vos applications Ruby(OnRails) 
Vous noterez toutefois que ce code ne fonctionne correctement avec les caractères accentués qu'avec un interpréteur Ruby >= 1.8.4.
Commentaires
Cool, j'espère que cette petite fonction servira et donnera des idées à du monde