Вместо этого вы можете использовать «слизняк». Вместо использования дословного заголовка в качестве URL-адреса вы strtolower()
заменяете все не алфавитно-цифровые символы дефисами, а затем удаляете дублирующиеся дефисы. Если вы хотите получить дополнительный кредит, вы можете удалить stopwords .
Итак, «1-й взнос в размере 10%, бесплатное членство в гольф !!!» становится:
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;
}
Вы могли бы, вероятно, сократить его с помощью более длинных регулярных выражений, но это довольно просто как есть. Бонусом является то, что вы можете использовать ту же функцию для проверки параметра запроса, прежде чем запускать запрос к базе данных, чтобы он соответствовал заголовку, чтобы кто-то не мог вставить глупости в вашу базу данных.