我目前正在使用以下代码将我的字符串转换为seo友好的urls:
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友好的url函数后,url与我的数据库中的任何文章标题都不匹配。
添加破折号(不确定小写)意味着它们与数据库中的条目完全不同。
我的下一步是什么,我应该在查询数据库之前删除破折号,如果是的话,如何删除?
或者更好的做法是在我的url中包含文章id并引用它?
发布于 2011-11-07 17:46:33
在我看来,按id查询要比重新转换回你的标题更快更简单,使用url重写来忽略标题(只是为了引用),并调用一个以id作为GET参数的页面。看看当前的网址,我会认为StackOverflow是这样工作的。
以当前页面为例,我怀疑
http://stackoverflow.com/questions/8034788/php-how-can-i-replace-dashes-with-spaces被重写为类似于
http://stackoverflow.com/questions.php?id=8034788其中一个简单的SQL查询获取文章的内容。
https://stackoverflow.com/questions/8034788
复制相似问题