http://domain.name/1-As Low As 10% Downpayment, Free Golf Membership!!!
上面的url会报400 bad request
,
如何将此类标题转换为用户友好的好请求?
最佳答案
您可能想使用“slug”来代替。您不使用逐字标题作为 URL,而是 strtolower()
并将所有非字母数字字符替换为连字符,然后删除重复的连字符。如果您想要额外的积分,您可以删除 stopwords ,也是。
所以“1-首付低至 10%,免费高尔夫成员(member)!!!”变成:
低至 10 首付免金成员(member)
类似这样的事情:
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;
}
您可能可以使用更长的正则表达式来缩短它,但它的原样非常简单。好处是,在数据库上运行查询以匹配标题之前,您可以使用相同的函数来验证查询参数,这样别人就无法将愚蠢的东西插入您的数据库中。
关于php - 在 PHP 中将标题转换为 url 兼容模式的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234169/