Skip to content

Instantly share code, notes, and snippets.

@govindak
Forked from anunay/urltitle.php
Created August 29, 2014 07:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save govindak/e305e5fceb1e93bbcb2e to your computer and use it in GitHub Desktop.
Save govindak/e305e5fceb1e93bbcb2e to your computer and use it in GitHub Desktop.
<?php
//usage:
//url_title($title);
if ( ! function_exists('url_title'))
{
/**
* Create URL Title
*
* Takes a "title" string as input and creates a
* human-friendly URL string with a "separator" string
* as the word separator.
*
* @todo Remove old 'dash' and 'underscore' usage in 3.1+.
* @param string $str Input string
* @param string $separator Word separator
* (usually '-' or '_')
* @param bool $lowercase Wether to transform the output string to lowercase
* @return string
*/
function url_title($str, $separator = '-', $lowercase = FALSE)
{
if ($separator === 'dash')
{
$separator = '-';
}
elseif ($separator === 'underscore')
{
$separator = '_';
}
$q_separator = preg_quote($separator, '#');
$trans = array(
'&.+?;' => '',
'[^a-z0-9 _-]' => '',
'\s+' => $separator,
'('.$q_separator.')+' => $separator
);
$str = strip_tags($str);
foreach ($trans as $key => $val)
{
$str = preg_replace('#'.$key.'#i', $val, $str);
}
if ($lowercase === TRUE)
{
$str = strtolower($str);
}
return trim(trim($str, $separator));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment