实验室-PHP重构$_GET参数部分

因为某项目中,用到分页函数。所以要重构url部分。
所以先自己试着去写了一下,
后来查询了一下php提供的相关函数。
下面你就可以看到同样的工作,不同的差距了。

这一种是自己写的:

//获取当前文件名部分
    $script_name_url = $_SERVER['SCRIPT_NAME'];  
    $filename = basename($script_name_url);// page.php
    //重构URL及参数部分
    $reset_url = '';
    $url = $_SERVER['REQUEST_URI'];// /review/php/day16_project_bbs/page.php?page=14&id=13
    $url_array = explode('/',$url);  //Array
    $url_argument = end($url_array);// page.php?page=14&id=13
    $url_argument = parse_url($url_argument);// array(2) { ["path"]=> string(8) "page.php" ["query"]=> string(12) "id=13&page=1" }
    //判断参数部分是否存在
    if(isset($url_argument['query'])){
        $query =$url_argument['query'];
        if(strpos($query,$page) === false){
            $reset_url = $filename.'?'.$query."&{$page}=";//page.php?id=1&onset=1&page=
        }else{
            // 情况1:page.php?page=1&id=13 
            // page参数在前
            $pattern = "/{$page}=\d+&+/";
            // 情况2:page.php?id=13&page=1
            // page参数在后
            $pattern2 = "/{$page}=\d+/";
            if(preg_match($pattern,$query,$sub_url)){//匹配到page=1&
                $sub_str_url = $sub_url[0];
                $query = preg_replace($pattern,"",$query);
                $query .= "&{$page}=";
                $reset_url = $filename.'?'.$query;
            }
            if(preg_match($pattern2,$query)){//匹配到page=1
                $query = preg_replace($pattern2,"{$page}=",$query);
                $reset_url = $filename.'?'.$query;
            }
        }
    }else{
        $reset_url = $filename."?{$page}=";//page.php?page=
    }

这一种是根据php提供的相关函数来写的:

<?php 
    // 重构url
    $reset_url = '';//用于重构url的初始化变量
    $url = $_SERVER['REQUEST_URI'];//     /review/php/day16_project_bbs/page.php?page=1&id=13
    $url_arr = parse_url($url); //  Array
    $url_path = $url_arr['path'];//    /review/php/day16_project_bbs/page.php

    //重构$_GET值
    if(!empty($url_arr['query'])){
        $url_query = $url_arr['query'];//   page=1&id=13
        parse_str($url_query,$query_arr);//array(2) { ["page"]=> string(1) "1" ["id"]=> string(2) "13" }
        unset($query_arr[$page]);
        // 判断$_GET是否还有其他值的存在
        if(empty($query_arr)){
            $reset_url = "{$url_path}?{$page}=";
        }else{
            $url_args = http_build_query($query_arr);
            $reset_url = "{$url_path}?{$url_args}&{$page}=";
        }
    }else{
        $reset_url = "{$url_path}?{$page}=";
    }

 ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值