public static function urlify($string, $spacer = '-') { $string = trim($string); $string = htmlspecialchars_decode($string, ENT_QUOTES); $string = strip_tags($string); $string = str_replace(array('$', '£', '€', '™', '®', '|'), array('', 'GBP ', 'EUR ', 'tm', 'r', ''), $string); $string = preg_replace('#(\\d)\\.(\\d)#', '$1 $2', $string); // make sure numbers with decimals don't mislead, e.g. 2.5 -> 25 $tranliterator_rule = 'Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();'; if (function_exists('transliterator_list_ids')) { if (in_array('Latin-ASCII', transliterator_list_ids())) { $tranliterator_rule = 'Any-Latin; Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();'; } } if (function_exists('transliterator_transliterate')) { $string = str_replace('-', ' ', $string); $s = transliterator_transliterate($tranliterator_rule, $string); } else { if (class_exists('Transliterator')) { $string = str_replace('-', ' ', $string); $T = Transliterator::create($tranliterator_rule); $s = $T->transliterate($string); } else { $s = iconv('UTF-8', 'ASCII//TRANSLIT', $string); $s = strtolower($s); $s = preg_replace('/[^a-z0-9\\-\\s]/', '', $s); } } $s = preg_replace('/[\\s\\-]+/', $spacer, $s); if (strlen($s) > 0) { return $s; } else { return PerchUtil::urlify_non_translit($string); } }