PHP parse_str 没有获取所有 $_GET 变量
PHP parse_str not getting all $_GET variables
我有一个奇怪的问题。
想从 parse_str 的字符串中获取 $_GET 变量。
除了第一个变量外,哪个有效。
让我怀疑我是否正确地编写了语法。但是是的,我想我(可能)做到了。
当我运行以下URL时:
system/filter/index?filter[date_selecttype]=日期&filter[period_start]=08-08-2019&filter[period_end]=31-08 -2019&filter[set_date]=30-08-2019&filter[booking_select_type]=booked&filter[booking_panel][6]=on&filter[booking_panel][9]=on&filter[booking_panel][1]=on&filter[booking_panel][2]=on&filter[booking_panel][11]=on&filter[booking_panel][4]=on&filter[booking_panel][5]=on&filter[booking_panel][10]=on&filter[booking_panel][7]=on&filter[booking_panel][3]=on&filter[booking_panel ][12]=on&filter[booking_panel][8]=on&filter[booking_state][1]=on&filter[booking_state][0]=on&filter[booking_state][ 2]=on&filter[booking_state][3]=on&filter[payment_state]=&filter[select_paymentmethod]=&filter[booking_source]=&filter[booking_saleschannel] =&filter[booking_travelcode]=&filter[booking_discountcode]=&execute_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
)
这让我提示我的语法不正确。
system/filter/index?过滤器
但接下来是我的问题。那怎么格式化呢?我认为这应该有效。
每当我设置:index.php?filter 时,结果都没有区别。
更新
添加了 BA_Webimax
发布的解决方案
$UrlStr = urldecode( str_replace( '&', '&', __FULLURL__ ) );
$query_string = parse_url($UrlStr, PHP_URL_QUERY );
parse_str($query_string, $GETVariables );
而且它很有魅力!
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 的字符串中获取 $_GET 变量。 除了第一个变量外,哪个有效。
让我怀疑我是否正确地编写了语法。但是是的,我想我(可能)做到了。
当我运行以下URL时:
system/filter/index?filter[date_selecttype]=日期&filter[period_start]=08-08-2019&filter[period_end]=31-08 -2019&filter[set_date]=30-08-2019&filter[booking_select_type]=booked&filter[booking_panel][6]=on&filter[booking_panel][9]=on&filter[booking_panel][1]=on&filter[booking_panel][2]=on&filter[booking_panel][11]=on&filter[booking_panel][4]=on&filter[booking_panel][5]=on&filter[booking_panel][10]=on&filter[booking_panel][7]=on&filter[booking_panel][3]=on&filter[booking_panel ][12]=on&filter[booking_panel][8]=on&filter[booking_state][1]=on&filter[booking_state][0]=on&filter[booking_state][ 2]=on&filter[booking_state][3]=on&filter[payment_state]=&filter[select_paymentmethod]=&filter[booking_source]=&filter[booking_saleschannel] =&filter[booking_travelcode]=&filter[booking_discountcode]=&execute_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
)
这让我提示我的语法不正确。 system/filter/index?过滤器
但接下来是我的问题。那怎么格式化呢?我认为这应该有效。 每当我设置:index.php?filter 时,结果都没有区别。
更新
添加了 BA_Webimax
发布的解决方案 $UrlStr = urldecode( str_replace( '&', '&', __FULLURL__ ) );
$query_string = parse_url($UrlStr, PHP_URL_QUERY );
parse_str($query_string, $GETVariables );
而且它很有魅力!
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 );