Я хочу создать строку URL, аналогичную той, которую SO использует для ссылок на вопросы. Я не смотрю на переписывание URL (mod_rewrite). Я смотрю на создание ссылки на странице.
Пример: название вопроса:
Is it better to use ob_get_contents() or $text .= ‘test’;
URL в конечном итоге будет:
/165271/luchshe-ispolzovat-obgetcontents-ili-text-test
Интересующая меня часть:
is-it-better-to-use-obgetcontents-or-text-test
Так что в основном я пытаюсь очистить все, что не является алфавитно-цифровым, сохраняя читаемость URL. Я создал следующее, но я не уверен, что это лучший способ или он охватывает все возможности:
$str = urlencode(
strtolower(
str_replace('--', '-',
preg_replace(array('/[^a-z0-9 ]/i', '/[^a-z0-9]/i'), array('', '-'),
trim($urlPart)))));
Так в основном:
- отделка
- заменить любой не алфавитно-цифровой плюс пробел ничем
- затем замените все, что не буквенно-цифровое, тире
- заменить - на -.
strtolower()
urlencode()
- вероятно, не нужно, но просто для хорошей меры.