我目前正在使用以下代码将我的字符串转换为seo友好的网址:
function url($url) {
$url = str_replace(" ", " ", $url);
$url = str_replace(array("'", "-"), "", $url);
$url = mb_convert_case($url, MB_CASE_LOWER, "UTF-8");
$url = preg_replace("#[^a-zA-Z]+#", "-", $url);
$url = preg_replace("#(-){2,}#", "$1", $url);
$url = trim($url, "-");
return $url;
}
当我查询我的数据库时,我将url与我数据库中的文章标题相匹配,我的问题是在执行seo friendly url函数后,url与我数据库中的任何文章标题都不匹配。
添加破折号(不确定小写)意味着它们与数据库中的条目完全不同。
我的下一步是什么,我应该在查询数据库之前删除破折号,如果是这样的话?
或者更好的做法是将文章ID包含在我的网址中并引用它?
答案 0 :(得分:2)
通过id查询似乎比重新转换标题更快更简单,使用url重写忽略标题(仅供参考)并调用id为GET参数的页面。查看当前的URL让我认为StackOverflow以这种方式工作。
以当前页面为例,我怀疑
http://stackoverflow.com/questions/8034788/php-how-can-i-replace-dashes-with-spaces
重写为
http://stackoverflow.com/questions.php?id=8034788
其中一个简单的SQL查询获取文章的内容。