PHP для преобразования строки в slug

Каков наилучший способ преобразования строки текста в пул? Имея в виду:

  • alpha allowed, конвертировать в нижний регистр
  • номера разрешены
  • пробелы должны быть устранены, а не преобразованы в тире («-»)
  • акцентированные символы заменены эквивалентной стандартной альфа
  • никакие другие допустимые символы не должны быть удалены

Я нашел много кода в Интернете, но все это имеет тенденцию конвертировать пробелы в тире, которые я не хочу делать.

Меня также интересует возможность изменения конверсии, в которой:

  • амперсанд («&») следует заменить строкой «и»,

А также вариант, в котором:

  • Не мешайте конвертировать акцентированные символы в эквивалентную стандартную альфа-версию

Вот измененная функция, которую я изначально нашел здесь ( http://cubiq.org/the-perfect-php-clean-url-generator ). вы можете передать '' как разделитель, чтобы не использовать '-' .

 public static function createSlug($str, $delimiter = '-'){ $slug = strtolower(trim(preg_replace('/[\s-]+/', $delimiter, preg_replace('/[^A-Za-z0-9-]+/', $delimiter, preg_replace('/[&]/', 'and', preg_replace('/[\']/', '', iconv('UTF-8', 'ASCII//TRANSLIT', $str))))), $delimiter)); return $slug; }