Генерировать дружественные к SEO URL-адреса (ярлыки)

Определение

Из Википедии :

slug является частью URL-адреса который идентифицирует страницу с помощью Слаг - это часть URL-адреса, которая идентифицирует страницу с помощью удобочитаемых ключевых слов. Чтобы пользователям было проще вводить URL-адрес, часто используются специальные символы ...

Определение

Из Википедии :

slug является частью URL-адреса который идентифицирует страницу с помощью Слаг - это часть URL-адреса, которая идентифицирует страницу с помощью удобочитаемых ключевых слов. Чтобы пользователям было проще вводить URL-адрес, часто используются специальные символы ...

Определение

Из Википедии :

slug является частью URL-адреса который идентифицирует страницу с помощью удобочитаемые ключевые слова.

Чтобы пользователям было проще вводить URL-адреса, часто используются специальные символы удалены или заменены. Например, акцентированные символы обычно заменяются буквами английского алфавита; пунктуация следы обычно удаляются; и пробелы (которые должны быть закодированы как % 20 или +) заменяются дефисом (-) или подчеркиванием (_), которые более эстетично.

Контекст

Я разработал веб-сайт для обмена фотографиями, на котором пользователи могут загружать, публиковать и просматривать фотографии.

Все страницы создаются автоматически, я не нажимаю на заголовок. Поскольку заголовок фотографии или имя пользователя могут содержать символы с диакритическими знаками или пробелы, мне нужна была функция для автоматического создания ярлыков и сохранения читабельных URL.

Я создал следующую функцию, которая заменяет символы с диакритическими знаками (âèêëçî), удаляет знаки препинания и плохие символы (# @ & ~ ^!) и преобразует пробелы в тире.

Вопросы

  • Что вы думаете об этой функции?
  • Знаете ли вы какие-либо другие функции для создания ярлыков?

Код

:

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;
}

17
задан GG. 4 April 2018 в 07:30
поделиться