3

我正在创建一个需要 slug 系统的系统。例如,标题为“博客标题:此处”的博客文章的 URL 将是:

YYYY/MM/DD/the-blog-title-here

我的系统设置得很好,如果你的 URL 匹配多个条目,它会显示所有匹配条目的摘要,如果它只匹配一个条目,它会显示完整条目,依此类推。我遇到的唯一麻烦是标题的“无懈可击”。目前,我只考虑第一个单词:我的 SQL 查询结束如下:

'AND subject LIKE '.$this->db->escape(substr($title,0,strpos($title,'-')).'%')

麻烦的是,如果同一天发布的两个帖子以相同的单词开头,则永远无法匹配单个条目。此外,如果一个帖子以“A”开头,而同一天发布的另一个帖子以字母 A 开头,则前一个帖子永远无法单独匹配。

我最初的想法是尝试将 slug 中的每个单词都与 a匹配LIKE %word%,虽然这样更好,但它看起来很hackish并且仍然不完美(“A slug:麻烦!”和“A麻烦的slug”会发生冲突)。这个问题有优雅的解决方案吗?

4

1 回答 1

6

为什么不在表中创建一个“slug”字段并与之匹配?将 slug 完全存储在其中,就像它在 url 中显示的那样,并进行完全匹配。应该能解决你的问题。另外,在数据库中输入 slug 时,检查是否存在类似的 slug,如果存在,请在末尾添加一个数字。例如“我的帖子”、“我的帖子 1”。

因此,这将在插入时涉及一些计算,但应该可以解决您的完全匹配问题。

于 2010-09-10T21:55:01.463 回答