This is an old revision of the document!
Mit dieser statischen Klasse ist es möglich aus einem beliebigen PHP String einen s.g. Slug zu generieren. Dieser wird meistens für URLs genutzt, ist aber auch praktisch für Array-Keys und ähnliche Anwendungen.
Die Sluggifier Klasse beruht auf einem Kommentar von stackoverflow. Das gute an dieser Slug-Generierung ist, dass sie auch UTF-8 Zeichenketten in ASCII umwandelt.
Hinweis: Diese Funktion nutzt im Schritt (0) die Wordpress Funktion wp_trim_words()
. Das funktioniert natürlich auch nur in einem Wordpress-Kontext! Wenn man den Sluggyfier so benutzen möchte, einfach die Zeile löschen und bei den Parametern das int $max_words = 15
entfernen.
<?php /** * Wandelt einen String in einen ASCII-URL-Slug um. * * Methode wurde erweitert um die wp_trim_words() * Funktion, damit man den String vorher sinnvoll * auf Wortanzahl runter kürzen an. * * Ursprung/Source: * @link https://stackoverflow.com/questions/2955251/php-function-to-make-slug-url-string * * */ class Sluggifier { public static function get( string $text, string $divider = '-', int $max_words = 15 ):string { if( empty($text) ) { return 'n-a'; } $text = wp_trim_words( $text, $max_words, '' ); // (0) (Wordpress Funktion) Text auf Wortanzahl kürzen $text = preg_replace( '~[^\pL\d]+~u', $divider, $text ); // (1) Alles was keine Buchstaben oder Zahlen sind ersetzen $text = iconv( 'utf-8', 'us-ascii//TRANSLIT', $text ); // (2) umwandeln von utf8 zu ascii $text = preg_replace( '~[^-\w]+~', '', $text ); // (3) unerwünschte Zeichen entfernen $text = trim( $text, $divider ); // (4) Leerzeichen am Ende & Anfang entfernen $text = preg_replace( '~-+~', $divider, $text ); // (5) Doppelte Divider löschen $text = strtolower( $text ); // (6) Alles als Kleinschreibung return $text; } }