Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态url(以斜杠分隔)参数是否到达数组?(例如:/category,cat1,cat2/类型,type1,type2)_Php_Laravel - Fatal编程技术网

Php 动态url(以斜杠分隔)参数是否到达数组?(例如:/category,cat1,cat2/类型,type1,type2)

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/之后,它是完全动态的 /皮肤护理-主要类别 在第一个斜杠分开后,所

祝大家今天愉快!,我目前正在处理电子商务,如产品过滤器、控制器获取前端主类别的请求和用斜杠(“/”分隔的参数)。URL参数发送方式如下:

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。若用户刷新了页面,它也会要求重新提交数据。非常感谢!。。。你的回答内容丰富,不客气。我很高兴这对你有帮助。