PHP -如何用空格替换破折号


PHP - How can I replace dashes with spaces?

我目前使用以下代码将字符串转换为seo友好的url:

        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功能后,网址不匹配任何文章标题在我的数据库。

添加的破折号(不确定小写)意味着它们与数据库中的条目完全不同。

下一步是什么,我应该在查询数据库之前删除破折号,如果是这样,如何?

或者是更好的做法,包括文章id在我的url的某个地方,并引用它?

按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查询获取文章的内容。