Php 动态url(以斜杠分隔)参数是否到达数组?(例如:/category,cat1,cat2/类型,type1,type2)
祝大家今天愉快!,我目前正在处理电子商务,如产品过滤器、控制器获取前端主类别的请求和用斜杠(“/”分隔的参数)。URL参数发送方式如下:Php 动态url(以斜杠分隔)参数是否到达数组?(例如:/category,cat1,cat2/类型,type1,type2),php,laravel,Php,Laravel,祝大家今天愉快!,我目前正在处理电子商务,如产品过滤器、控制器获取前端主类别的请求和用斜杠(“/”分隔的参数)。URL参数发送方式如下: example.com/skin-care/categories,facial-cleansers-toners/collection,classic/skin-types,normal,soft 当用户从过滤器中选择属性时,这些URL将打开。所以在example.com/skin care/之后,它是完全动态的 /皮肤护理-主要类别 在第一个斜杠分开后,所
example.com/skin-care/categories,facial-cleansers-toners/collection,classic/skin-types,normal,soft
当用户从过滤器中选择属性时,这些URL将打开。所以在example.com/skin care/
之后,它是完全动态的
/皮肤护理
-主要类别
在第一个斜杠分开后,所有参数都是动态属性。
例如:/{attribute},value1,value1,…
因此,上面的示例有1个主类别slug和3个属性(类别、集合、皮肤类型)以及这些属性的值
我只需要把这些属性放到关联数组中。就这样,
$attributes = ['categories' => ['facial-cleansers-toners'],
'collection' => ['classic'],
'skin-types' => ['normal','soft']
];
$attributes = [];
foreach ($url_attributes as $attribute_key => $attribute_value) {
$each_attribute = explode(',', $attribute_value);
$cat = array_shift($each_attribute);
$attributes[$cat] = $each_attribute;
}
谢谢您的url是:
$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项方案
,主机
和路径
。我们只需要这里的路径,所以:
$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\u category='skin care'
),因此:
在最后一步中,我们得到了$url\u attributes
,我们需要用foreach循环填充attributes数组,并按分解字符串,
如下所示:
$attributes = ['categories' => ['facial-cleansers-toners'],
'collection' => ['classic'],
'skin-types' => ['normal','soft']
];
$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输出中,此返回:
您可以通过以下方式访问皮肤类型:$attributes[“皮肤类型”]
为什么不通过POST管理这些属性?无法执行表单“POST”请求,因为它不利于SEO。若用户刷新了页面,它也会要求重新提交数据。非常感谢!。。。你的回答内容丰富,不客气。我很高兴这对你有帮助。