玩得很好,伙计们!,我目前正在eCommerce上工作,比如产品过滤器,控制器从前端主类别获得请求,参数用斜杠(‘/’)分隔。URL参数发送如下:
example.com/skin-care/categories,facial-cleansers-toners/collection,classic/skin-types,normal,soft当用户从过滤器中选择属性时,这些URL将打开。所以在example.com/skin-care/完全是动态的之后。
/skin-care -主类别后第一个斜杠分开,所有参数动态属性。例:/{attribute},value1,value1,..
因此,上面的例子有一个主要类别弹格和三个属性(类别、集合、皮肤类型)和该属性的值。
我只需要获得这些属性来关联数组。就像这样:
$attributes = ['categories' => ['facial-cleansers-toners'],
'collection' => ['classic'],
'skin-types' => ['normal','soft']
];谢谢
发布于 2021-03-06 08:53:24
你的网址是:
$static_url = "http://example.com/skin-care/categories,facial-cleansers-toners/collection,classic/skin-types,normal,soft";首先,我们必须解析您的URL以获得所需的参数:
$url_components = parse_url($static_url);该变量输出3项scheme、host和path。从这里开始我们只需要path,所以:
$url_path = $url_components['path'];在下一个级别中,我们需要从字符串中删除第一个/字符,并通过/字符引爆字符串:
$url_path_params = ltrim($url_path, $url_path[0]);
$url_attributes = explode('/', $url_path_params);在本节中,我们提供了您可能需要的主要类别:
$main_category = $url_attributes[0]; // skin-care我们这里不需要第一项($main_category = 'skin-care'),所以:
array_shift($url_attributes);在最后一步中,我们获得了需要使用foreach循环填充属性数组的$url_attributes,并按如下方式由,爆炸字符串:
$attributes = [];
foreach ($url_attributes as $attribute_key => $attribute_value) {
$each_attribute = explode(',', $attribute_value);
$cat = array_shift($each_attribute);
$attributes[$cat] = $each_attribute;
}如果从$attributes获得输出,就会得到所需的数据。在var_dump输出中,这将返回:

您可以通过: skin_types访问$attributes["skin-types"]。
https://stackoverflow.com/questions/66503348
复制相似问题