从数据库创建URL

从数据库创建URL,url,mod-rewrite,replace,Url,Mod Rewrite,Replace,我正在尝试根据用户输入的信息创建干净的URL。我的.htaccess文件中有这个 RewriteRule ^[^/]+/$ /records.php [QSA,L] 这对于访问这样的地址非常有用:example.com/blah/。我让它做的是打印“blah”类别的所有记录或用户输入的任何其他内容(或我链接到的内容)。当用户输入并存储带有空格的类别时,问题就出现了。我想保持类别与空间的完整性,但我还需要创建一个URL友好的类别版本。我将链接到如下类别: $nospace = str_repla

我正在尝试根据用户输入的信息创建干净的URL。我的.htaccess文件中有这个

RewriteRule ^[^/]+/$ /records.php [QSA,L]
这对于访问这样的地址非常有用:example.com/blah/。我让它做的是打印“blah”类别的所有记录或用户输入的任何其他内容(或我链接到的内容)。当用户输入并存储带有空格的类别时,问题就出现了。我想保持类别与空间的完整性,但我还需要创建一个URL友好的类别版本。我将链接到如下类别:

$nospace = str_replace(" ", "-", $row['category']) ; 
echo "<a href=/".$nospace."/>" . $nospace . "</a>";
$nospace=str_replace(“,”-“,$row['category]”);
回声“;
当您到达目标URL时,问题就出现了。如果类别有一个空格,但我链接到一个带有-,的类别,我自然不会从该类别中得到任何东西。它不存在

如何在类别名称中保留空格,同时创建URL友好的类别名称并链接到它?

php(它看起来就是您正在使用的)支持
urlencode
urlencode
您可以使用URL编码的类别构建链接,然后在另一端对它们进行URL解码。=)

echo';

太好了!唯一的问题是urlencode在空格之间添加了+而不是-。我如何更改它?如果你想要可靠的编码解码,你应该让
urlencode
做它该做的事。你是否必须使用hypens?如果是这样,
str_替换('+','-',urlencode($row['category'))
编码,然后
urldecode(str_replace(“+”、“-”、$”GET[“category]”))
echo '<a href="/'.urlencode($row['category']).'">'.$row['category']."</a>";