gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:19:59 25 4
gpt4 key购买 nike

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

RewriteRule ^news/([a-zA-Z0-9._]+)/?$ /news.php?news_title=$1

这是我的 .htaccess 文件,因此在 news.php 中我通过 $_GET 获取“news_title”变量,然后查询数据库以查找具有此标题的文章。所以我的问题是,我做的这一切都是错的吗?还有其他方法可以做到这一点吗?我两天前才开始使用 htaccess,我想让我的网址更加友好。我希望我的问题很清楚。感谢所有帮助我的人。

仅举个例子,这就是我用来转换字符串中的普通图 block 的方法,该字符串不会因网址中的符号(;amp、%、? 等)而改变

function generateUrl($url) {

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

return $final;
}

最佳答案

我认为您的问题的答案就在这里URL Friendly Username in PHP? 。当您将文章添加到表中时,使用此函数(Slug)转换文章标题并将转换后的标题存储在“slug”列中。当用户输入地址 (.....)/article.php?name=some-title 时,使用 $slug = $_GET['title'] 并通过 slug 查找文章。在保存文章之前,您应该检查带有此别名的文章是否存在。如果存在,则添加一些数字,然后保存到数据库。不允许表中存在两条具有相同 slug 的记录。

关于php - 如何格式化数据库查询的url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11903803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com