我正在编写一个脚本,它将从URL中选择一个术语,并根据该术语从我的数据库中提取正确的数据。
到目前为止,我已经在我的.htaccess文件中添加了一行代码,该文件会将我的网址重写为SEO友好格式,例如:
http://mydomain.com/catalogue/some-item-name
在实际的PHP页面上,我抓住了该变量,删除破折号
$item= str_replace('-', ' ', $_GET['item']);
并将项目与我页面上的隐藏列表相匹配,以便与jQuery进行匹配。
一切正常,除非我的项目名称实际上有一个破折号。我的脚本删除了所有破折号。我应该:
如果我从db中提取该术语,我可以使用 WHERE项目LIKE“%$ item%” ,但是因为我必须匹配精确的术语alredy present在我的HTML代码中,我有点卡住了。
感谢。
答案 0 :(得分:1)
我们使用一个系统,我们根据数据库检查传入的URI,并查看用户的发送位置。这样,我们就可以完全从系统内部(例如ID)中分离URI。
我们将传入的URI与数据库中的uri
字段进行匹配,并从正确的类(控制器)加载正确的函数或重定向。它还可以选择向函数发送参数。
让我举例说明
+---------+---------+----------+----------+--------+
| uri | class | function | new_uri | vars |
+---------+---------+----------+----------+--------+
| faq | support | faq | | |
+---------+---------+----------+----------+--------+
| sandwich| content | news | | 1 |
+---------+---------+----------+----------+--------+
| banana | | | sandwich | |
+---------+---------+----------+----------+--------+
案例1:
用户请求test.com/faq,URI路由器在uri ='faq'上找到匹配项,并告诉系统在支持类或控制器显示中显示任何faq()
。
案例2:
用户请求test.com/sandwich,它是ID为1的新闻故事的快捷方式。因此,URI路由器向内容类中的news()
发送调用,我们可以从{{{}}变量中检索id 1 {1}}。
案例3: 用户请求test.com/banana,由于我们不再在香蕉行业,因此已将其移至test.com/sandwich。因此,URI路由器礼貌地发送301并将用户重定向到正确的位置。
此方法有许多扩展方法,例如通过允许uri字段中的通配符等。希望它对你也有一些价值。