Как сгенерировать псевдоним SEF для строкового значения БД

#mysql #sql #url #sef

#mysql #sql #url — адрес #сэф #url #sef

Вопрос:

У меня есть таблица БД с именем games, которая, скажем просто для упрощения, содержит столбцы «id» и «gametitle» и содержит примерно 7000 уже заполненных строк.

Что я хотел бы сделать, так это иметь часть SQL, которая сгенерировала бы псевдоним SEF для названия игры, который я мог бы использовать в URL (у меня на сайте успешно выполняется перезапись URL).

Новое поле будет введено в новый столбец с именем «gamealias».

Так, например, если бы у меня был игровой заголовок «Halo: Combat Evolved», он отбрасывал бы любые специальные символы и создавал что-то похожее на «halo-combat-evolved». Все псевдонимы в таблице должны быть уникальными, поскольку они будут использоваться в URL игр … напримерhttp://thegamesdb.net/game/halo-combat-evolved /

Кроме того, было бы неплохо, если бы при вставке новой строки псевдоним мог быть сгенерирован автоматически из SQL без необходимости обрабатывать его в PHP (возможно, используя каким-то образом значение по умолчанию полей sql), хотя я не возражаю против необходимости делать это в PHP, если это невозможно волшебным образом в SQL.

Ответ №1:

Я думаю, что это можно было бы сделать в MySQL с помощью триггера и UDF с заменой регулярных выражений, но, вероятно, это был бы более простой маршрут, просто используя PHP. Вы могли бы легко гарантировать уникальность gamealias, если бы интегрировали первичный ключ заголовка со строкой. Например, рассмотрим что-то, что выводило бы «halo-combat-evolved-321».

Комментарии:

1. хммм, это определенно дает пищу для размышлений! первичный ключ, содержащийся в псевдониме, звучит как хорошая идея …. но я не думаю, что у меня есть необходимые навыки MySQL для написания моей собственной пользовательской функции : ( Спасибо за понимание! 🙂

2. @flexage, если вы хотите использовать маршрут замены регулярных выражений UDF, взгляните на mysqludf.org/lib_mysqludf_preg или launchpad.net/mysql-udf-regexp