mysql_real_escape_string () имеет другое назначение, чем urlencode (), которые оба не подходят для создания ярлыка.
Заголовок должен быть ясной и содержательной фразой, кратко описывающей страницу.
mysql_real_escape_string () экранирует опасные символы, которые могут изменить назначение исходной строки запроса.
urlencode () экранирует недопустимые символы URL с помощью символа "%", за которым следуют 2 шестнадцатеричные цифры, представляющие их код (например,% 20 для пробела).Таким образом, результирующая строка не будет ясной и значимой из-за неприятных последовательностей символов, например http://www.domain.com/bad%20slug%20here%20%3C--
Таким образом, любые символы, на которые может воздействовать urlencode (), должны быть опущены, за исключением пробелов, которые обычно заменяются на -
.
Использование 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;
}
Это также правильно работает для символов с диакритическими знаками.