You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP获取URL GET参数时参数值内&被截断丢失如何解决

问题成因

  • GET参数的标准分隔符为&,Web服务端解析查询字符串时,会优先将&识别为不同参数的分割边界,不会将其判定为参数值的组成部分。
  • 你当前URL中参数值内的&仅做了HTML实体编码为&,该编码规则仅适用于HTML文档渲染场景,对URL解析逻辑无效,PHP仍然会把&开头的&识别为参数分隔符,因此clss_type的取值到&位置就被截断,最终只能拿到Boys。

解决方法

方案1:生成URL时对参数值做URL编码(推荐)

拼接URL前对所有参数值使用PHP原生的urlencode()函数做URL编码,编码后参数值中的&会被转换为%26,不会被识别为参数分隔符:

<?php
$type = 'Boys & Girls';
// 生成的URL为 page.php?clss_type=Boys%2B%26%2BGirls
$url = 'page.php?clss_type=' . urlencode($type);

// 接收端直接取值即可拿到完整内容
$class = $_GET['clss_type'];
echo $class; // 输出 Boys & Girls
?>

方案2:手动解析原始查询字符串(兼容场景)

如果无法调整URL生成逻辑,可以直接读取原始未解析的查询字符串手动提取参数:

<?php
// 读取原始查询字符串
$rawQuery = $_SERVER['QUERY_STRING'];
// 正则匹配提取clss_type的完整值
if (preg_match('/clss_type=([^&]*)/', $rawQuery, $res)) {
    $class = urldecode($res[1]);
    // 处理值中的HTML实体
    $class = html_entity_decode($class);
    echo $class; // 输出 Boys & Girls
}
?>

内容的提问来源于stack exchange,提问作者Mohamed Saeed Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:06:04