лучший способ избежать и создать слизню

Возможный дубликат:
URL Friendly Имя пользователя в PHP?

im каким-то образом запутался в использовании надлежащих функций для выхода и создания пули

Я использовал это:

$slug_title = mysql_real_escape_string()($mtitle); 

но кто-то сказал мне не использовать его и использовать urlencode ()

который лучше для слизней и безопасности

как я вижу в SO, он вставляет – между словами:

 https://stackoverflow.com/questions/941270/validating-a-slug-in-django 

Использование MySQL или экранирование URL-адресов – это не путь.

Вот статья, которая делает это лучше:

 function toSlug($string,$space="-") { if (function_exists('iconv')) { $string = @iconv('UTF-8', 'ASCII//TRANSLIT', $string); } $string = preg_replace("/[^a-zA-Z0-9 -]/", "", $string); $string = strtolower($string); $string = str_replace(" ", $space, $string); return $string; } 

Это также правильно работает для акцентированных символов.

mysql_real_escape_string () имеет другую цель, чем urlencode (), которая не подходит для создания пули.

Предполагается, что пуля должна быть четкой и содержательной фразой, которая кратко описывает страницу.

mysql_real_escape_string () запускает опасные символы, которые могут изменить цель исходной строки запроса.

urlencode () удаляет недопустимые URL-адреса с символом «%», за которым следуют две шестнадцатеричные цифры, которые представляют их код (например,% 20 для пробела). Таким образом, результирующая строка не будет ясна и значима из-за неприятных последовательностей символов, например http://www.domain.com/bad%20slug%20here%20%3C–

Таким образом, любые символы, которые могут быть затронуты urlencode (), должны быть опущены, за исключением пробелов, которые обычно заменяются на.