2011-03-03 140 views
0

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

RewriteRule ^[^/]+/$ /records.php [QSA,L] 

这对于去像这样的地址很有用:example.com/blah/。我所做的就是打印“blah”类别的所有记录或用户输入的任何内容(或我链接到的内容)。当用户输入并存储具有空间的类别时,问题就出现了。我想保留类别与空间的完整性,但我也需要创建一个友好的URL类别的版本。我链接到如下类别:

$nospace = str_replace(" ", "-", $row['category']) ; 
echo "<a href=/".$nospace."/>" . $nospace . "</a>"; 

当您到达目标URL时,问题就出现了。如果类别有一个空格,但我使用 - 链接到一个类别,我自然不会从该类别中获得任何内容。它不存在。

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

回答

0

php(这是它看起来像你使用的)支持urlencodeurldecode你可以建立你的链接与url编码的类别,然后在另一端url解码它们。 =)

echo '<a href="/'.urlencode($row['category']).'">'.$row['category']."</a>"; 
+0

太棒了!唯一的问题是urlencode在空格之间添加+而不是 - 。我该如何改变它? – Freddie 2011-03-03 07:33:54

+0

好吧,如果你想要可靠的编码解码,你应该让'urlencode'做它的事情。你使用超级敏感是至关重要的吗?如果是这样,'str_replace('+',' - ',urlencode($ row ['category']))'编码,然后'urldecode(str_replace('+',' - ',$ _ GET ['category' ]))' – Shad 2011-03-03 21:02:52