А, слизи
// This function expects the input to be UTF-8 encoded.
function slugify($text)
{
// Swap out Non "Letters" with a -
$text = preg_replace('/[^\\pL\d]+/u', '-', $text);
// Trim out extra -'s
$text = trim($text, '-');
// Convert letters that we have left to the closest ASCII representation
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
// Make text lowercase
$text = strtolower($text);
// Strip out anything we haven't been able to convert
$text = preg_replace('/[^-\w]+/', '', $text);
return $text;
}
Это работает довольно хорошо, так как сначала он использует свойства юникода каждого символа, чтобы определить, является ли он буквой (или \ d против числа), - затем он преобразует те, которые не в «-», а затем транслитерируется в ASCII, делает другую замену для чего-либо еще, а затем убирает за собой. (тест Фабрика возвращает "arvizturo-tukorfurogep")
Я также склоняюсь к добавлению в список стоп-слов, чтобы они были удалены из слага. "the" of "" или "" a "и т. д. (но не делайте этого по длине, или вы удалите такие вещи, как" php ")