Преобразовать заголовок пользователя (текст) в URL, что вместо пробелов, # и других символов?

У меня есть форма на сайте, где пользователи могут добавлять новые страницы. Я должен создать SEO-дружественные URL и сделать их уникальными. Какие символы я могу отображать в URL, я знаю, что пробелы нужно преобразовать в подчеркивание:

"" -> "_" и перед ним - подчеркивает что-то еще, например:

"_" -> / подчеркивание

Легко сделать заголовок из URL-адреса назад.

Но в моем конкретном заголовке могут быть все символы с клавиатуры, даже: @#%:"{/\';.>

Есть ли противопоказания не использовать эти символы в URL?

Важным является:

-легко генерировать URL и заголовок из URL обратно (без запросов к базе данных)

Каждый заголовок уникален, поэтому URL должен быть слишком

-ЕО дружественные URL

1 ответ

Разве вы не запрашиваете базу данных для получения контента в любом случае? В этом случае просто захватите поле заголовка в том же запросе.

Единственный способ надежно получить заголовок из URL-адреса - "закодировать его" (в PHP вы используете urlencode() функция). Тем не менее, вы в конечном итоге с URL-адресами, как это:

My%20page%20title

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

My page title
My_page title
My_page_title

Короче говоря: не беспокойтесь об одном дополнительном попадании в базу данных, просто используйте оптимизированные для SEO URL-адреса, ограничив их строчными буквами az, 0-9 и тире, например my-page-title, Как я уже сказал, вы все равно можете просто получить все в одном запросе.

Другие вопросы по тегам