Kurztipp in PHP: String zu Slug

Rathes Sachchithananthan — 16.Jun.2015
in Web

Eigentlich hätte gestern ein Blogbeitrag kommen müssen zum Thema Web. Aus Zeitmangel ist dies aber nicht geschehen. Ich habe aber heute etwas geschrieben, was ich euch präsentieren möchte. Ein kleines Skript wie man aus einem beliebigen Stück String einen Slug erzeugt.

Slug? Was ist das?

Was ein Slug ist, muss ich eigentlich nicht erklären. Jeder Web-Entwickler wird diesem Begriff bereits begegnet sein. Für alle anderen schreibe ich hier mal ein paar kleine Worte. Alles aller erstes, was sagt Wikipedia dazu?

ein aus einem oder wenigen Wörtern bestehender benutzer- und suchmaschinenfreundlicher Text (sprechender Name) als Bestandteil einer URL, siehe Clean URL

Und bei Clean URL steht dann drin, was eine lesbare suchmaschinenfreundliche URL ist. Ein Slug ist aber nur der String-Teil der sauberen URL, der zwischen den Schrägstrichen steht. Damit diese lesbar sind, müssen diese auch so umgeschrieben werden, dass dieser technisch sauber und suchmaschinenfreundlich sind. Das heißt, dass man keine Leerzeichen benutzen sollte, keine Unterstriche oder Sonderzeichen und so weiter. „Das ist ein Test & weiter“ sollte also umgeschrieben werden zu „das-ist-ein-test-weiter“. Dazu stelle ich den Code hier rein.

Umwandeln in einen Slug – Die Funktion

Ich kopiere euch den Code mal direkt hier rein und schreibe danach noch ein paar Worte dazu.


public static function slugify($text){
$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
$text = trim($text, '-');
$text = iconv('utf-8', 'ascii//TRANSLIT', $text);
$text = strtolower($text);
$text = preg_replace('~[^-\w]+~', '', $text);
return $text;
}

Zeile 1 macht nichts anderes als alles bis auf Zahlen und Buchstaben in ein „-“ umzuwandeln. Die Zeile 2 sorgt dafür, dass die „-“ am Anfang und am Ende verschwinden. Die dritte Zeile konvertiert den Text ASCII Zeichensatz, um so auch Umlaute und ähnliches loszuwerden. Das //TRANSLIT sorgt dafür, dass die Sonderzeichen soweit wie möglich beibehalten und in ein ähnliches Zeichen umgeschrieben werden. Zeile 4 schreibt alles in Kleinbuchstaben um und Zeile 5 entfernt noch einmal alle unnötigen Zeichen.

Es ist ein ganz simples Skript, aber für ein derzeitiges Projekt sehr hilfreich. Auch in Zukunft werde ich das Skript öfters benutzen und ich dachte mir, dass es auch euch interessieren könnte. Das Skript kann bestimmt noch verbessert werden – z.B. das Saubere Umschreiben der deutschen Umlaute von ä zu ae, ö zu oe und ü zu ue könnte man noch in Angriff nehmen. Bestimmt gibt es da noch mehr. Fall wer von euch noch was hat, gerne in den Kommentaren posten!

UPDATE 23:18 – 06/16, 2015:

Direkt mal ein Update. Habe den Beitrag vor wenigen Minuten auf Twitter gepostet und da hat ein User meinen Tweet favorisiert. Über die Timeline des Users bin ich auf folgendes gestoßen: https://github.com/keyvanakbary/slugifier. Falls also von euch einer mal einen komplexen, vollständigen „Slugifier“ sucht. Hier ist einer!

Rathes Sachchithananthan

Rathes Sachchithananthan

Hi, ich bin Rathes. Gründer dieses Blogs. Darüber hinaus habe ich Aheenam gegründet, eine Agentur für digitale Lösungen. Dort konzipiere und entwickle ich die digitale Weiterentwicklung meiner Kunden. Ich brenne für das Thema "Tamilen und Tamil Eelam" und bin ein Microsoft-Fanboy. Du findest mich auch auf diversen sozialen Netzwerken

Web und die Welt — Gott kann auch mal drin vorkommen

Ein Blog über das Web und die Welt. Wir schreiben über viele interessante Themen wie z.B. das Web, Tamil Eelam oder über Fotografie. Vielleicht ist auch was für dich dabei?