Skip to content

Instantly share code, notes, and snippets.

@lethak
Created June 17, 2015 16:12
Show Gist options
  • Save lethak/459752ce31f167656006 to your computer and use it in GitHub Desktop.
Save lethak/459752ce31f167656006 to your computer and use it in GitHub Desktop.
<?php
function slugify($text, $separator = '-')
{
$string = trim(''.$text);
if($string=='')
$string = trim(''.$this->getTitle());
$accents_regex = '~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i';
$special_cases = array( '&' => 'and');
$string = mb_strtolower( trim( $string ), 'UTF-8' );
$string = str_replace( array_keys($special_cases), array_values( $special_cases), $string );
$string = preg_replace( $accents_regex, '$1', htmlentities( $string, ENT_QUOTES, 'UTF-8' ) );
$string = preg_replace("/[^a-z0-9]/u", "$separator", $string);
$string = preg_replace("/[$separator]+/u", "$separator", $string);
$exploded = explode($separator, $string);
foreach($exploded as $partK => $partV)
$exploded[$partK] = ucfirst($partV);
$string = implode($separator, $exploded);
$string = trim(''.$string, ' -');
return $string;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment