代码之家  ›  专栏  ›  技术社区  ›  Mala

如何“取消”标题段塞

  •  3
  • Mala  · 技术社区  · 14 年前

    我正在创建一个需要段塞系统的系统。例如,标题为“blog title:here”的博客文章的URL是:

    年/月/日/此处为博客标题

    我已经很好地设置了系统,如果您的URL匹配多个条目,它将显示所有匹配条目的摘要,如果它只匹配一个条目,它将显示完整条目,依此类推。我遇到的唯一麻烦是标题的“拔掉”。目前,我只考虑第一个词:我的SQL查询的结尾如下:

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

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

    我最初的想法是尝试匹配 每一个 弹头中的单词 LIKE %word% 虽然这更好,但它看起来很粗俗,仍然不完美(“鼻涕虫:麻烦事!”“麻烦的鼻涕虫”会发生冲突)。这个问题有一个很好的解决方案吗?

    1 回复  |  直到 14 年前
        1
  •  6
  •   Sabeen Malik    14 年前

    为什么不在表中创建一个“slug”字段,并在此字段上进行匹配?将该slug按其在URL中显示的方式存储在其中,并进行精确匹配。应该解决你的问题。同样,在数据库中输入slug时,检查是否存在类似的slug,如果存在,则在末尾添加一个数字。例如“我的帖子”,“我的帖子1”。

    因此,这将在插入时进行一点计算,但应该解决精确的匹配问题。