Php 如何格式化数据库查询的url

Php 如何格式化数据库查询的url,php,mysql,.htaccess,url,url-rewriting,Php,Mysql,.htaccess,Url,Url Rewriting,我是新来的,需要你的帮助。 我开始使用.htaccess和php,遇到了一个问题。 在进行url重写时,我将从数据库中提取的文章标题字符串传递到url中。问题是字符串(标题)中有许多字符在url中拼写错误。例如:localhost/news/php%5%为%out 这里%是空白区。我尝试用preg_replace格式化每个标题,并用“-”替换每个空格,但是有很多字符,我想知道是否有任何方法可以在没有preg_replace的情况下实现这一点,这样任何字符串都可以用于查询。 在news.php中,

我是新来的,需要你的帮助。 我开始使用.htaccess和php,遇到了一个问题。 在进行url重写时,我将从数据库中提取的文章标题字符串传递到url中。问题是字符串(标题)中有许多字符在url中拼写错误。例如:localhost/news/php%5%为%out 这里%是空白区。我尝试用preg_replace格式化每个标题,并用“-”替换每个空格,但是有很多字符,我想知道是否有任何方法可以在没有preg_replace的情况下实现这一点,这样任何字符串都可以用于查询。 在news.php中,我从url获取字符串,并将其用于数据库中的查询,从中提取整篇文章的正文

RewriteRule ^news/([a-zA-Z0-9._]+)/?$ /news.php?news_title=$1
这是我的.htaccess文件,因此在news.php中,我通过$\u get获取“news\u title”变量,然后查询数据库以查找具有此标题的文章。 所以我的问题是,我做错了吗?还有别的方法吗?我两天前才开始使用htaccess,我想让我的URL更友好。 我希望我的问题是清楚的。 谢谢所有帮助我的人

举个例子,这就是我用来转换字符串中的普通平铺的方法,该字符串不会随url中的符号(;amp、%,?)而改变

function generateUrl($url) {

    $v1 = preg_replace("/[\s\:\;\,\_\'\`\"\?\!\%\(\)\+\=\#\@\[\]\{\}\/]/", "-", $url );
    $v2= preg_replace('/[-]{2,}/', '-', $v1);
    $v3 = preg_replace('/^[-]/', '', $v2);
    $final = preg_replace('/[-]$/', '', $v3);

    return $final;
}

我想你问题的答案就在这里。将文章添加到表中时,使用此函数(Slug)转换文章标题,并将转换后的标题存储在列“Slug”中。当用户输入地址(…)/article.php?name=some title时,使用$slug=$\u GET['title']并按slug查找文章。在保存文章之前,您应该检查带有此段塞的文章是否存在。如果存在,则向slug添加一些数字,然后保存到db。不能允许表中存在两条具有相同slug的记录。

该字符类中唯一需要转义的是
/
。就我个人而言,我更喜欢这样做:
$urlslaug=trim(preg_replace('/[\W_]+/','-',$urlslaug),'-')
这样任何非字母数字字符序列都会变成一个单一的
-
谢谢,这很有帮助。还有一件事,一些字符像“使函数不工作。说实话,我在使用这个函数时没有任何问题。”。如果此函数对某些字符不起作用,请在使用此函数之前替换这些字符。您也可以尝试使用这个函数(),但我认为第一个更好。