Определение
От Wikipedia:
A slug - это часть URL-адреса, которая идентифицирует страницу, используя человекочитаемые ключевые слова.
Чтобы сделать URL-адрес проще для пользователей, специальные символы часто удалены или заменены. Например, акцентированные символы обычно заменяются буквами английского алфавита; пунктуация метки обычно удаляются; и пробелы (которые должны быть закодированы как %20 или +) заменены тире (-) или символом подчеркивания (_), которые более эстетично.
Контекст
Я разработал сайт для обмена фотографиями, на котором пользователи могут загружать, обмениваться и просматривать фотографии.
Все страницы создаются автоматически без моего захвата названия. Поскольку заголовок фотографии или имя пользователя могут содержать акцентированные символы или пробелы, мне нужна функция автоматического создания пули и сохранения читаемых URL-адресов.
Я создал следующую функцию, которая заменяет символы с акцентом (âèêëçî), удаляет знаки пунктуации и плохие символы (# @& ~ ^!) и преобразует пробелы в тире.
Вопросы
- Что вы думаете об этой функции?
- Знаете ли вы какие-либо другие функции для создания пули?
Код
php:
function sluggable($str) {
$before = array(
'àáâãäåòóôõöøèéêëðçìíîïùúûüñšž',
'/[^a-z0-9\s]/',
array('/\s/', '/--+/', '/---+/')
);
$after = array(
'aaaaaaooooooeeeeeciiiiuuuunsz',
'',
'-'
);
$str = strtolower($str);
$str = strtr($str, $before[0], $after[0]);
$str = preg_replace($before[1], $after[1], $str);
$str = trim($str);
$str = preg_replace($before[2], $after[2], $str);
return $str;
}