PHP-Function: Create slugs from string

Every website needs to implement readable URLs for internal linking. When you are using a blogging tool like WordPress or a CMS like Typo3, you automatically get the URL slug generator built in.

But sometimes, you are developing your own software and are in need of a function that simply generates a slug for you.

Search no more, because here it is: the PHP function to generate slugs for you.

function slugify($input, $word_delimiter='-') {
	$slug = iconv('UTF-8', 'ASCII//TRANSLIT', $input);
	$slug = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $slug);
	$slug = strtolower(trim($slug, '-'));
	$slug = preg_replace("/[\/_|+ -]+/", $word_delimiter, $slug);
	return $slug;
}

$slugString = slugify("This is just a small test for a slug creation");
echo $slugString;
// returns : this-is-just-a-small-test-for-a-slug-creation

This PHP function takes a simple string as first parameter, which will be turned into your slug. In this example, we are using the string This is just a small test for a slug creation .

The function slugify  then returns a nice, readable slug for you.

this-is-just-a-small-test-for-a-slug-creation

If you want to use another delimiter, simply pass it as the second parameter to the function.

Comments

  1. Ein Vorschlag für deutsche Strings:

    function slugify($input, $word_delimiter=’-‘) {
    $replaceSet = [‘ä’ => ‘ae’, ‘ö’ => ‘oe’, ‘ü’ => ‘ue’, ‘ß’ => ‘ss’, ‘ ‘ => ‘-‘];

    $slug = strtr($input, $replaceSet);
    $slug = iconv(‘UTF-8’, ‘ASCII//TRANSLIT’, $slug);
    $slug = preg_replace(“/[^a-zA-Z0-9\/_|+ -]/”, ”, $slug);
    $slug = strtolower(trim($slug, ‘-‘));
    $slug = preg_replace(“/[\/_|+ -]+/”, $word_delimiter, $slug);
    $slug = substr($slug, 0, 95);

    return $slug;
    }

    :)

      1. Bei mir blieb TYPO3 am Em-dash hängen, daher ich den Convert angepasst:

        $slug = iconv(‘UTF-8’, ‘ASCII//IGNORE’, $input);

        also TRANSLIT mit IGNORE ersetzt.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.