我有一段时间遇到这个问题,
假设我们有一个电影网站
我们在数据库中有一部名为Test-movies123!
的电影,
现在我要做的是创建一个URL watch/test-movie123-{$id}/
,然后使用ID
现在问题是ID不应该在那里,我该如何解决这个问题呢?
如果我从网址获取test-movie123
并进行搜索,我找不到它,因为它没有!
,除非我使用LIKE
,但这不是非常值得信赖......
任何人都可以提出任何建议?非常感谢
答案 0 :(得分:4)
好吧,你可以创建一个规则来获取电影标题并将其变成一个slu ..所以,你知道你总是小写标题,删除除字母,数字和短划线以外的任何内容,并将空白转换为单个短划线。
然后将其存储在数据库的另一列中,并确保强制使用唯一性。获取URL并从中搜索该列。
从那时起,你只需要处理如果你上传了第二个产生完全相同的slug的视频会发生什么。这有很多选项...附加一个随机数slug,增加一个数字并附加它等等。
答案 1 :(得分:2)
要做到这一点,你可能在数据库中有类似primary_key的东西 “测试movies123”。
想象一下,您有一个控制面板,您可以在表单中插入电影。 然后使用标题Test Movies123!将它保存在数据库中,如下例所示:
id:AUTO_INCREMENT NUMBER keyname:sanityTitle(“Test Movies123!”)< - 这应该保存“test-movies123” 标题:“测试电影123!” 东西:“blablabla”
注意sanityTitle()将是您从标题中准备友好网址的功能。
然后你的网址会是这样的 watch / test-movie123 /在url中使用正则表达式控件 要么 看/?id = test-movie123 raw
您将在表格中搜索INDEXED或PRIMARY键,“keyname”,它将输出1行,包含所有内容。