php怎么把链接上的参数去掉

fiy 其他 360

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    要将链接上的参数去掉,可以使用PHP中的parse_url()和http_build_query()两个函数来实现。以下是具体的方法:

    1. 使用parse_url()函数解析链接:

    “`php
    $url = “http://example.com?param1=value1&param2=value2”;
    $parsedUrl = parse_url($url);
    “`

    解析后的结果会返回一个包含链接各个部分的关联数组。在这个示例中,结果如下:

    “`
    Array
    (
    [scheme] => http
    [host] => example.com
    [path] => /
    [query] => param1=value1&param2=value2
    )
    “`

    2. 使用parse_str()函数将查询字符串解析为数组:

    “`php
    parse_str($parsedUrl[‘query’], $params);
    “`

    解析后的结果会返回一个关联数组,其中包含解析后的参数和值。在这个示例中,结果如下:

    “`
    Array
    (
    [param1] => value1
    [param2] => value2
    )
    “`

    3. 将参数数组中的参数移除:

    “`php
    unset($params[‘param1’]);
    unset($params[‘param2’]);
    “`

    这里使用unset()函数将指定的参数从数组中移除。

    4. 使用http_build_query()函数将修改后的参数数组重新构建为查询字符串:

    “`php
    $newQuery = http_build_query($params);
    “`

    构建完成后,$newQuery将保存修改后的查询字符串。

    5. 使用parse_url()函数解析链接,并按照以下方式重新构建链接:

    “`php
    $newUrl = $parsedUrl[‘scheme’] . ‘://’ . $parsedUrl[‘host’] . $parsedUrl[‘path’] . ‘?’ . $newQuery;
    “`

    这样,$newUrl就是去除参数后的新链接。

    完整的代码示例如下:

    “`php
    $url = “http://example.com?param1=value1&param2=value2”;
    $parsedUrl = parse_url($url);

    parse_str($parsedUrl[‘query’], $params);
    unset($params[‘param1’]);
    unset($params[‘param2’]);

    $newQuery = http_build_query($params);

    $newUrl = $parsedUrl[‘scheme’] . ‘://’ . $parsedUrl[‘host’] . $parsedUrl[‘path’] . ‘?’ . $newQuery;

    echo $newUrl;
    “`

    以上就是使用PHP将链接上的参数去掉的方法。通过解析链接、操作参数数组,然后重新构建链接,可以实现去除链接参数的目的。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    PHP可以通过使用`parse_url()`函数来解析URL,并使用`parse_str()`函数来解析查询字符串参数。然后,可以使用`http_build_query()`函数来重新构建URL,但不包括查询字符串参数。以下是在PHP中去除URL参数的几种方法:

    1. 使用parse_url()和parse_str()函数:
    “`php
    $url = “https://www.example.com/page.php?param1=value1&param2=value2”;
    $parts = parse_url($url);
    parse_str($parts[‘query’], $query);
    unset($query[‘param1’]); // 移除param1参数
    unset($query[‘param2’]); // 移除param2参数
    $newUrl = $parts[‘scheme’] . “://” . $parts[‘host’] . $parts[‘path’] . “?” . http_build_query($query);
    echo $newUrl;
    “`

    2. 使用正则表达式:
    “`php
    $url = “https://www.example.com/page.php?param1=value1&param2=value2″;
    $newUrl = preg_replace(‘/(&|\?)param1=[^&]+/’, ”, $url);
    $newUrl = preg_replace(‘/(&|\?)param2=[^&]+/’, ”, $newUrl);
    echo $newUrl;
    “`

    3. 使用$_SERVER[‘QUERY_STRING’]和$_SERVER[‘SCRIPT_NAME’]:
    “`php
    $url = “https://www.example.com/page.php?param1=value1&param2=value2”;
    $parts = explode(“?”, $url);
    $scriptName = $_SERVER[‘SCRIPT_NAME’];
    $queryString = $_SERVER[‘QUERY_STRING’];
    $queryParams = explode(“&”, $queryString);
    $newQueryParams = array();
    foreach ($queryParams as $param) {
    $paramParts = explode(“=”, $param);
    $paramName = $paramParts[0];
    if ($paramName != “param1” && $paramName != “param2”) {
    $newQueryParams[] = $param;
    }
    }
    $newUrl = $parts[0] . “?” . implode(“&”, $newQueryParams);
    echo $newUrl;
    “`

    4. 使用$_GET和unset()函数:
    “`php
    $url = “https://www.example.com/page.php?param1=value1&param2=value2”;
    unset($_GET[‘param1’]); // 移除param1参数
    unset($_GET[‘param2’]); // 移除param2参数
    $newUrl = $url . “?” . http_build_query($_GET);
    echo $newUrl;
    “`

    5. 使用http_build_url()函数(需要安装pecl_http扩展):
    “`php
    $url = “https://www.example.com/page.php?param1=value1&param2=value2”;
    $parseUrl = parse_url($url);
    $query = array();
    parse_str($parseUrl[‘query’], $query);
    unset($query[‘param1’]); // 移除param1参数
    unset($query[‘param2’]); // 移除param2参数
    $newUrl = http_build_url($parseUrl, array(“query” => http_build_query($query)));
    echo $newUrl;
    “`

    这些方法可以从URL中移除特定的查询字符串参数,并生成一个新的URL。根据情况选择适合您的需求的方法。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    PHP提供了多种方法来去掉链接上的参数。以下是一些常见的方法和操作流程:

    1. 使用正则表达式替换方法:可以使用preg_replace函数来替换链接中的参数部分。代码示例如下:

    “`php
    $url = ‘http://example.com/?param1=value1&param2=value2’;
    $newUrl = preg_replace(‘/\?.*/’, ”, $url);
    echo $newUrl; // 输出:http://example.com/
    “`

    上述代码中,使用正则表达式`/\?.*/`匹配参数部分,并替换为空字符串。

    2. 使用parse_url函数解析URL:可以使用parse_url函数来解析URL,然后再拼接URL的其他部分。代码示例如下:

    “`php
    $url = ‘http://example.com/?param1=value1&param2=value2’;
    $parts = parse_url($url);

    $newUrl = $parts[‘scheme’] . ‘://’ . $parts[‘host’] . $parts[‘path’];
    echo $newUrl; // 输出:http://example.com/
    “`

    上述代码中,首先使用parse_url函数解析URL,然后将解析得到的scheme、host和path拼接成新的URL。

    3. 使用$_SERVER[‘REQUEST_URI’]获取当前URL:可以使用全局变量`$_SERVER[‘REQUEST_URI’]`来获取当前请求的URL,然后使用正则表达式或字符串处理方法去除参数部分。代码示例如下:

    “`php
    $currentUrl = $_SERVER[‘REQUEST_URI’];
    $newUrl = preg_replace(‘/\?.*/’, ”, $currentUrl);
    echo $newUrl; // 输出当前URL的去参版本
    “`

    上述代码中,首先使用`$_SERVER[‘REQUEST_URI’]`获取当前URL,然后使用正则表达式`/\?.*/`匹配参数部分并替换为空字符串。

    无论使用哪种方法,注意要进行参数的安全性验证,确保去除参数后的URL是有效和安全的。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部