将用户标题(文本)转换为 URL,用啥代替空格、#、& 和其他字符?

Posted

技术标签:

【中文标题】将用户标题(文本)转换为 URL,用啥代替空格、#、& 和其他字符?【英文标题】:Convert user title (text) to URL, what instead spaces, #, & and other characters?将用户标题(文本)转换为 URL,用什么代替空格、#、& 和其他字符? 【发布时间】:2011-02-25 00:10:18 【问题描述】:

我在网站上有一些表格,用户可以在其中添加新页面。我必须生成对 SEO 友好的 URL,并使这些 URL 独一无二。 我可以在 URL 中显示哪些字符,我知道我应该将空格转换为下划线:

" "->"_" 和之前 - 下划线表示其他内容,例如:

"_"->/下划线

从 URL 返回标题很容易。

但在我的特定标题中,可以是键盘上的所有字符,甚至:@#%:"/\';.>

在 URL 中不使用此字符是否有一些禁忌?

重要的是:

-轻松从 URL 生成 URL 和标题(无需查询数据库)

-每个标题都是唯一的,所以 URL 也必须是唯一的

-SEO 友好的 URL

【问题讨论】:

【参考方案1】:

你不是要查询数据库来获取内容吗?在这种情况下,只需在同一查询中获取标题字段。

可靠地从 URL 中获取标题的唯一方法是对其进行“URL 编码”(在 php 中,您使用 urlencode() 函数)。但是,您最终会得到这样的 URL:

My%20page%20title

您不能替换任何字符,因为这样您就没有唯一的 URL。例如,如果您将空格替换为下划线,则以下标题都将生成相同的 URL:

My page title
My_page title
My_page_title

简而言之:不必担心额外的数据库命中,只需使用对 SEO 友好的 URL,限制为小写 a-z、0-9 和破折号,例如 my-page-title。就像我说的那样,无论如何,您都可以在一个查询中获取所有内容。

【讨论】:

是的,但是我在插入记录(我们必须生成唯一的 url)和表中的附加列时会遇到更多问题。我可以先将 undescores 转换为例如“(.)”,然后将空格转换为 undescores,所以这不是问题。 但链接将是:example.com/page_sdf(.)sdf 所以我认为它对 SEO 不友好。但是当我浏览***页面时,我可以看到很多这样的链接,例如:pl.wikipedia.org/wiki/A* 或pl.wikipedia.org/wiki/%22Ad_leones!%22 重要的是,我的网站中的普通链接(没有下划线和其他奇怪字符)会少得多。 如果您将下划线转换为其他内容,您仍然会遇到同样的问题。也许它很少会发生,但如果有人在他们的标题中包含“(.)”,它仍然是可能的。 还要创建唯一的 URL,为什么不使用 Stack Overflow 之类的解决方案并在 URL 中包含唯一 ID?这也将加快数据库查询,因为您只是通过 ID 查找,而不是长文本字符串。

以上是关于将用户标题(文本)转换为 URL,用啥代替空格、#、& 和其他字符?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 对于大文本数据用啥类型

将用户在文本框中输入的URL转换为URI格式

使用 C++ 将空格分隔值文本转换为 .csv 然后保存 [关闭]

使用 Python 将文本文件中的空格转换为换行符

用啥代替 $.mobile.changePage()?

如何将空格和换行符从 TEXTAREA 转换为 html