PHP parse\u str未获取所有$\u GET变量

PHP parse\u str未获取所有$\u GET变量,php,variables,parse-url,Php,Variables,Parse Url,我有一个奇怪的问题。 要使用parse\u str从字符串中获取$\u GET变量。 除第一个变量外,其他变量都有效 让我怀疑我是否正确地编写了语法。但是是的,我想我(可能)做到了 当我运行以下URL时: $UrlStr = urldecode(str_replace('&', '&', __FULLURL__)); parse_str($UrlStr, $GETVariables); 系统/过滤器/索引?过滤器[日期选择类型]=日期和过

我有一个奇怪的问题。 要使用parse\u str从字符串中获取$\u GET变量。 除第一个变量外,其他变量都有效

让我怀疑我是否正确地编写了语法。但是是的,我想我(可能)做到了

当我运行以下URL时:

        $UrlStr = urldecode(str_replace('&', '&', __FULLURL__));
        parse_str($UrlStr, $GETVariables);
系统/过滤器/索引?过滤器[日期选择类型]=日期和过滤器[期间开始]=2019年8月8日和过滤器[期间结束]=2019年8月31日和过滤器[设置日期]=2019年8月30日和过滤器[预订选择类型]=预订和过滤器[预订面板][6]=开启和过滤器[预订面板][9]=开启和过滤器[预订面板][1]=开启和过滤器[预订面板][2]=开启和过滤器[预订面板][11]=开启和过滤器[预订面板][4]在线和过滤[预订面板][5]=在线和过滤[预订面板][10]=在线和过滤[预订面板][7]=在线和过滤[预订面板][3]=在线和过滤[预订面板][12]=在线和过滤[预订面板][8]=在线和过滤[预订状态][1]=在线和过滤[预订状态][0]=在线和过滤[预订状态][2]=在线和过滤[预订状态][3]=在线和过滤[支付状态]=在线和过滤[选择支付方式]=&filter[booking\u source]=&filter[booking\u sales channel]=&filter[booking\u travelcode]=&filter[booking\u discountcode]=&execute\u filter=1

通过以下代码:

        $UrlStr = urldecode(str_replace('&', '&', __FULLURL__));
        parse_str($UrlStr, $GETVariables);
我收到以下变量:

Array
(
    [system/filter/index?filter] => Array
        (
            [date_selecttype] => date
        )

    [filter] => Array
        (
            [period_start] => 08-08-2019
            [period_end] => 31-08-2019
            [set_date] => 30-08-2019
            [booking_select_type] => booked
            [booking_panel] => Array
                (
                    [6] => on
                    [9] => on
                    [1] => on
                    [2] => on
                    [11] => on
                    [4] => on
                    [5] => on
                    [10] => on
                    [7] => on
                    [3] => on
                    [12] => on
                    [8] => on
                )

            [booking_state] => Array
                (
                    [1] => on
                    [0] => on
                    [2] => on
                    [3] => on
                )

            [payment_state] => 
            [select_paymentmethod] => 
            [booking_source] => 
            [booking_saleschannel] => 
            [booking_travelcode] => 
            [booking_discountcode] => 
        )

    [execute_filter] => 1
)
这让我觉得我的语法不正确。 系统/过滤器/索引?过滤器

但接下来是我的问题。那怎么格式化呢?我想这应该行得通。 每当我设置:index.php?过滤器时,它对结果没有影响

更新 添加了由BA_Webimax发布的解决方案

它是一种魅力

Array
(
    [filter] => Array
        (
            [date_selecttype] => date
            [period_start] => 08-08-2019
            [period_end] => 31-08-2019
            [set_date] => 30-08-2019
            [booking_select_type] => booked
            [booking_panel] => Array
                (
                    [6] => on
                    [9] => on
                    [1] => on
                    [2] => on
                    [11] => on
                    [4] => on
                    [5] => on
                    [10] => on
                    [7] => on
                    [3] => on
                    [12] => on
                    [8] => on
                )

            [booking_state] => Array
                (
                    [1] => on
                    [0] => on
                    [2] => on
                    [3] => on
                )

            [payment_state] => 
            [select_paymentmethod] => 
            [booking_source] => 
            [booking_saleschannel] => 
            [booking_travelcode] => 
            [booking_discountcode] => 
        )

    [execute_filter] => 1
)
parse_str()
用于处理查询字符串,而不是完整的URL。为了正确分离URL组件,我建议您首先使用
parse_URL()
来隔离查询字符串

$UrlStr = urldecode( str_replace( '&', '&', __FULLURL__ ) );

$query_string = parse_url( $UrlStr, PHP_URL_QUERY );

parse_str( $query_string, $GETVariables );
parse_str()
用于处理查询字符串,而不是完整的URL。为了正确分离URL组件,我建议您首先使用
parse_URL()
来隔离查询字符串

$UrlStr = urldecode( str_replace( '&', '&', __FULLURL__ ) );

$query_string = parse_url( $UrlStr, PHP_URL_QUERY );

parse_str( $query_string, $GETVariables );

我可能会对此感到遗憾,但为什么不直接使用
$\u-GET
parse\u-str
应该在通过URL传递的查询字符串上运行,也就是说,
符号后面的所有字符。为什么要在完整URL上运行它呢?要仅获取查询字符串,我可能会对此感到遗憾,但为什么不直接使用
$\u-GET
parse\u str
应在通过URL传递的查询字符串上运行,即
符号后面的所有字符。为什么要在完整URL上运行它?若要仅获取查询字符串,请使用pulence!Added!pulence!Added!