我正在创建一个需要slug系统的系统。例如,标题为“博客标题:此处”的博客文章的URL将是:
YYYY / MM / DD /所述-博客标题-这里
我已经很好地设置了系统,如果你的URL匹配多个条目,它会显示所有匹配条目的摘要,如果它只匹配一个条目,则显示完整条目,依此类推。我遇到的唯一麻烦就是标题的“清除”。目前,我只考虑第一个字:我的SQL查询结束如下:
'AND subject LIKE '.$this->db->escape(substr($title,0,strpos($title,'-')).'%')
问题是,如果同一天发布的两个帖子以相同的单词开头,则单个条目永远不会匹配。此外,如果一个帖子以“A”开头,而同一天发布的另一个帖子以字母A开头,则以前的帖子永远不能单独匹配。
我最初的想法是尝试将slu in中的每个单词与LIKE %word%
进行匹配,虽然这样看起来更好但看起来仍然不完美(“slu a:麻烦!“和”一个麻烦的slu“”会发生冲突。这个问题有一个优雅的解决方案吗?
答案 0 :(得分:6)
为什么不在表格中创建一个“slug”字段并且只是匹配呢?将slu存储存在那里的方式与在url中显示的完全匹配并完全匹配。应该解决你的问题。此外,当在数据库中输入slug时,检查是否存在类似的slug,如果存在,则在末尾添加一个数字。例如'my-post','my-post-1'。
因此,这将涉及插入时的一点计算,但应解决您的完全匹配问题。