我不知道这是否可行。我已经尝试了很多不同的正则表达式组合,我什么都没想出来。所以,这是我的问题......
我有一个产品页面,需要根据类别(可以嵌套到无限,但最有可能嵌套3个级别),排序列(带订单,ASC或DESC),过滤器(即制造商,这将是键/值对),标签(可以包含空格的单词(\ w)的简单列表),最后是页面。
该类别是上述唯一必需的选项。当然,上面的每个变量都需要被捕获到一个数组中进行处理。
示例网址:
会呈现:
category => Home/Bedroom/Beds
sort_by => price
sort_order => desc
manufacturer => ikea
size => king
tags => Array('black','lowprofile','wood','green')
page => 2
我很确定我生活在这个正则表达式可能的梦想世界中。或许我正在以错误的方式看待它。很可能因为我已经盯着它看了很长时间。
任何接受者?我会在这里把头撞到墙上。
答案 0 :(得分:1)
创建一个删除所有预期变量的自定义路由。
您的新路线应该尝试匹配
产品/ * /参数1 /值1 /参数2 / VALUE2 /等
如果您知道第一个参数名称是什么,或者甚至是其中任何一个,您可以开始删除URL的部分,这些部分应该留给您动态的东西(使用/,循环,破坏第一个已知的参数)。
以下是实际创建自定义路线的说明: how to get dynamic URL like mydomain.com/username using zend framework
答案 1 :(得分:1)
IMO你这样做是错误的。你应该有一个“更清洁”的路线:
/products/*
如果匹配路由,请从开头获取$_SERVER['request_uri']
,剥离/products/
并解析类别。以“form”语法(?param1=a¶m2=b
)添加参数。