所以,我在DB中有以下几行:PHP + MySQL:使用通配符搜索
1 |/users/
2 |/users/admin/
3 |/users/admin/*
4 |/users/admin/mike/
5 |/users/admin/steve/docs/
输入URL是/users/admin/steve/,目标是从数据库中找到URL匹配。
我想返回#3作为正确的行,因为通配符“*”指定任何东西都可以代替星号。这样做最有效的方法是什么?
这是我最初的想法,但我敢肯定,他们可以改进:
- 进行查询,看看是否有一个确切的URL匹配
- 如果没有匹配,然后检索所有行以“*”作为最后一个字符,倒序排列(因此更具体的URL优先)
- 对于每一行,如果它(输入“*”)与输入的URL匹配,则返回
- 如果没有任何结果找到了,那我们就是SOL
这很完美,谢谢! – Matt 2008-12-13 04:35:28