首页 > 后端开发 > php教程 > 如何在 PHP 中有效地从 URL 中删除查询字符串?

如何在 PHP 中有效地从 URL 中删除查询字符串?

DDD
发布: 2024-12-04 18:14:12
原创
196 人浏览过

How Can I Efficiently Remove Query Strings from URLs in PHP?

获取不带查询字符串的 URL

使用 PHP 为当前页面构建 URL 时,您可能会遇到请求的 URL 包含查询字符串,如:

www.example.com/myurl.html?unwantedthngs
登录后复制

删除查询字符串并获得干净的 URL例如:

www.example.com/myurl.html
登录后复制

您可以利用多功能的 strtok 函数。

$url = strtok($_SERVER["REQUEST_URI"], '?');
登录后复制

strtok() 提供了一种简单的方法来提取第一次出现 ? 之前的 URL 部分。特点。与explode()需要创建一个最多包含两个元素的数组然后提取第一个元素相比,strtok()是一种更直接的方法。

使用其他方法,例如strstr()或substr() 可能会导致不稳定的行为,特别是当查询字符串不存在或包含多个查询参数时。为了说明 strtok() 的有效性,请考虑以下演示:

$urls = [
    'www.example.com/myurl.html?unwantedthngs#hastag',
    'www.example.com/myurl.html'
];

foreach ($urls as $url) {
    var_export(['strtok: ', strtok($url, '?')]);
    echo "\n";
    var_export(['strstr/true: ', strstr($url, '?', true)]); // unreliable
    echo "\n";
    var_export(['explode/2: ', explode('?', $url, 2)[0]]);  // limit stops after first encounter
    echo "\n";
    var_export(['substr/strrpos: ', substr($url, 0, strrpos( $url, "?"))]);  // unreliable
    echo "\n---\n";
}
登录后复制

输出:

array (
  0 => 'strtok: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'strstr/true: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'explode/2: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'substr/strrpos: ',
  1 => 'www.example.com/myurl.html',
)
---
array (
  0 => 'strtok: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'strstr/true: ',
  1 => false,                       // unreliable
)
array (
  0 => 'explode/2: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'substr/strrpos: ',
  1 => '',                          // unreliable
)
---
登录后复制

如输出中所示,strtok 始终返回所需的 URL,不带查询字符串,无论查询字符串是否存在或为空。通过使用 strtok(),您可以有效且可靠地从任何给定请求中提取干净的 URL。

以上是如何在 PHP 中有效地从 URL 中删除查询字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板