27. März 2008 in Ruby » Code-Schnipsel

Einfache Strings für SEO-freundliche URLs vorbereiten

Es werden alle Sonderzeichen aus dem String entfernt. Umlaute werden in AE, OE und UE etc., das ß in SS umgewandelt. Alle Buchstaben werden in Minuskeln umgewandelt und alle Leerräume werden mit Minuszeichen gefüllt. Ein doppeltes Vorkommen, das Beginnen oder Beenden mit einem Minuszeichen wird verhindert.

def create_callname(string)
  # Autor: Martin Labuschin
  # Erstellt am 27. März 2008
  # Es werden alle Sonderzeichen aus dem String entfernt. Umlaute werden in AE, OE und UE etc., das ß in SS umgewandet. Alle Buchstaben werden in Minuskeln umgewandelt und alle Leerräume werden mit Minuszeichen gefüllt. Ein doppeltes Vorkommen, das Beginnen oder Beenden mit einem Minuszeichen wird verhindert.
  # BEMERKUNG: Es wird nur Plaintext erwartet
  callname = string.dup
  callname.gsub!(/[Ää]+/i,'ae') 
  callname.gsub!(/[Üü]+/i,'ue') 
  callname.gsub!(/[Öö]+/i,'oe') 
  callname.gsub!(/[ß]+/i,'ss') 
  callname.downcase!
  callname.gsub!(/[^a-z0-9]+/i, '-')
  callname.gsub!(/(^[-]+|[-]+$)/, '')
  return callname
end

Verbesserunsvorschläge sind selbstverständlich gerne gesehen!


4 Kommentare

Kristof Dreier am 27. März 2008 #

Das "return callname" kann man sich doch garantiert sparen, oder? :)

Martin Labuschin am 27. März 2008 #

Richtig. Find ich persönlich so aber schöner.

Peter Grosskopf am 8. April 2008 #

Jau und man kann das auch noch platzsparender machen, indem man die ganzen gsubs hintereinander hängt, also: gsub().gsub().gsub() ...

Martin Labuschin am 9. April 2008 #

Peter, klar geht das. Aber ich hab's lieber übersichtlich und wartbarer. Kennst' das ja ...

Kommentar hinzufügen

Du kannst dich hier frei äußern, jedoch solltest du dich dabei fair gegenüber den anderen Lesern und dem Autor verhalten. Private Mitteilungen an Martin bitte per E-Mail an martin@labuschin.com. Danke.






* Angabe erforderlich, E-Mailadresse wird nicht veröffentlicht
URLs werden automatisch verlinkt, HTML ist nicht erlaubt

oder Abbrechen