Наличие заголовка URL, соответствующего запросу MySQL - PullRequest
2 голосов
/ 08 августа 2009

У меня есть строки SQL с этой информацией: Пример - Примерный (Exampleishbosh)

не все имеют () в них, поэтому было бы неплохо удалить

- and ()

вне URL, а затем просто выполнить поиск оставшихся слов в запросе SQL?

http://www.co.com/example_exampleish_exampleishbosh/

или это плохая идея?

Ответы [ 2 ]

3 голосов
/ 08 августа 2009

Если я правильно понимаю, вы ищете функциональность, похожую на слизень, если это так, вот функция, которую вы должны использовать для "защелкивания" строк ASCII:

function Slugify($string)
{
    return strtolower(trim(preg_replace('~-+~', '-', preg_replace('~[^0-9a-z]~i', '-', $string)), '-'));
}

Slugify('Example - Exampleish (Exampleishbosh)'); // example-exampleish-exampleishbosh

Вы должны сохранить слаг в базе данных и сопоставить его с запрашиваемым URL.

РЕДАКТИРОВАТЬ : Эта функция может быть упрощена немного больше:

function Slugify($string)
{
    return strtolower(trim(preg_replace(array('~[^0-9a-z]~i', '~-+~'), '-', $string), '-'));
}
1 голос
/ 08 августа 2009

Поскольку этот вопрос для меня немного неясен, я предполагаю, что информационная строка выступает в качестве ключевого слова для дополнительной информации (например, заголовка для статьи), и нет настоящего поиска GET требование.

Если это так, если разрешено изменять структуру базы данных, я бы использовал вместо этого суррогатный ключ (например, числовой идентификатор), используя title-thingy в качестве слага .

В этом случае, когда вы создаете ссылки на своем веб-сайте, вы получаете как идентификатор, так и слаг для цели, и создаете его URL в формате http://example.com/[id]/[slug]/, например http://example.com/213/omg-lol-the-cat-jumped/.

При обработке запроса на вашем сервере вас интересует только идентификатор ("213"), а слизень ("omg-lol-the-cat-jumped") предназначен только для пользователя-человека, чтобы тот прокрался -пик заголовка, и не влияет на результат поиска. Вы предоставляете страницу, которая соответствует идентификатору, а не слаг. Таким образом, ваш поиск эффективен (без сопоставления SQL LIKE) и менее подвержен ошибкам (инъекции SQL из неформатных слагов).

Что касается (возможно?) Вопроса о том, как преобразовать строку в слаг, есть много подходов к этому. Я бы просто удалил все не алфавитно-цифровые символы и совместил буквенно-цифровые фрагменты с тире или подчеркиванием. Возможно, вы хотите сократить длину строки до 20 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...