PHP Basics

How To Create A URL Slug With PHP

Link

Having a user friendly URL is user important not just for SEO but also to help the visitors know that the website they are on is correct.

If you have spaces in your URL they will be replaced by %20 so if you are linking to the page.

http://www.example.com/this is the example demo page

The browser would actual render this URL as

http://www.example.com/this%20is%20the%20example%20demo%20page

As you can see this isn't the most user friendly URL so you need to be able to replace the spaces with hyphens.

Here is a PHP snippet that will replace all spaces with a hyphen.

<?php
function create_url_slug($string){
   $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
   return $slug;
}

echo create_url_slug('this is the example demo page');
// This will return 'this-is-the-example-demo-page'
?>

Extended URL Slug Version

Here is an extended version of the URL slug function. This will take care of any characters which have accents and will also catch double hyphens in the URL and replace it will just the one hyphen.

function slugify($str) {
    $search = array('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
    $replace = array('s', 't', 's', 't', 's', 't', 's', 't', 'i', 'a', 'a', 'i', 'a', 'a', 'e', 'E');
    $str = str_ireplace($search, $replace, strtolower(trim($str)));
    $str = preg_replace('/[^\w\d\-\ ]/', '', $str);
    $str = str_replace(' ', '-', $str);
    return preg_replace('/\-{2,}', '-', $str);
}

Source: https://gist.github.com/2912227

Back to top

Learn how to code with Treehouse

  • Learn projects with access to 1000+ videos
  • Practice live with our Code Challenge Engine
  • Get help in our members-only forums

Start with a 7 day free trial