Intereting Posts
Массовое переименование файлов в папке – PHP возможно ли, если обратный вызов в параметре array_filter принимает параметр? Запрет на IPv4 и IPv6 как получить или отправить многостраничный запрос данных в PHP Забывание двойного равенства в php if-statement Показывать 8 бит байта в PHP PHP – проблема производительности и памяти с глобальными переменными Автоматическое форматирование кода Linux (PHP, JavaScript, HTML, CSS, MySQL) как загрузить изображение на сервере с помощью ajax в кордовой сборке Ошибка MYSQL: предупреждение: mysqli_fetch_assoc () ожидает, что параметр 1 будет mysqli_result, boolean given PHP Phalcon Routing с расширением файла Laravel 4: может ли одна модель обслуживать несколько таблиц БД? Каков самый быстрый способ опроса таблицы MySQL для новых строк? Является ли порядок INPUTS в POST гарантированным для ввода массива в PHP? Nginx и / или php5-fpm запоминают символическую корневую директорию

Лучший способ конвертировать заголовок в совместимый с url режим в PHP?

http://domain.name/1-As Low As 10% Downpayment, Free Golf Membership!!! 

Вышеприведенный URL будет сообщать о 400 bad request ,

как преобразовать такое название в удобный для пользователя хороший запрос?

Вместо этого вы можете использовать «slug». Вместо того, чтобы использовать стенографическое название в качестве URL-адреса, вы strtolower() и замените все не-буквенно-цифровые символы на дефисы, а затем удалите повторяющиеся дефисы. Если вы чувствуете, что получаете дополнительный кредит, вы также можете лишить столов .

Итак, «1-As Low As 10% Downpayment, Free Golf Membership !!!» будет выглядеть так:

as-low-as-10-downpayment-free-gold-membership

Что-то вроде этого:

 function sluggify($url) { # Prep string with some basic normalization $url = strtolower($url); $url = strip_tags($url); $url = stripslashes($url); $url = html_entity_decode($url); # Remove quotes (can't, etc.) $url = str_replace('\'', '', $url); # Replace non-alpha numeric with hyphens $match = '/[^a-z0-9]+/'; $replace = '-'; $url = preg_replace($match, $replace, $url); $url = trim($url, '-'); return $url; } 

Вероятно, вы могли бы сократить его с помощью более длинных регулярных выражений, но это довольно просто. Бонус заключается в том, что вы можете использовать ту же функцию для проверки параметра запроса, прежде чем запускать запрос в базе данных в соответствии с заголовком, чтобы кто-то не мог вставлять глупые вещи в вашу базу данных.

См. Первый ответ здесь URL Friendly Username в PHP? :

 function Slug($string) { return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([az]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-')); } $user = 'Alix Axel'; echo Slug($user); // alix-axel $user = 'Álix Ãxel'; echo Slug($user); // alix-axel $user = 'Álix----_Ãxel!?!?'; echo Slug($user); // alix-axel 

Вы можете использовать urlencode или rawurlencode … например, Wikipedia делает это. См. Эту ссылку: http://en.wikipedia.org/wiki/Ichigo_100%25

это кодировка php для% =% 25

Я просто создаю сущность с полезной функцией slug:

https://gist.github.com/ninjagab/11244087

Вы можете использовать его, чтобы конвертировать заголовок в дружественный URL-адрес seo.

 <?php class SanitizeUrl { public static function slug($string, $space="-") { $string = utf8_encode($string); if (function_exists('iconv')) { $string = iconv('UTF-8', 'ASCII//TRANSLIT', $string); } $string = preg_replace("/[^a-zA-Z0-9 \-]/", "", $string); $string = trim(preg_replace("/\\s+/", " ", $string)); $string = strtolower($string); $string = str_replace(" ", $space, $string); return $string; } } $title = 'Thi is a test string with some "strange" chars ò à ù...'; echo SanitizeUrl::slug($title); //this will output: //thi-is-a-test-string-with-some-strange-chars-oau 

Вы можете использовать rawurlencode()

Чтобы просто просто $change_to список переменных $change_to и $to_change

 <?php // Just full the array list to make replacement complete // In this space will change to _, à to just a $to_change = [ ' ', 'à', 'à', 'â','é', 'è', 'ê', 'ç', 'ù', 'ô', 'ö' // and so on ]; $change_to = [ '_', 'a', 'a', 'a', 'e', 'e', 'e','c', 'u', 'o', 'o' // and so on ]; $texts = 'This is my slug in êlàb élaboré par'; $page_id = str_replace($to_change, $change_to, $texts);