PHP 接受 URL 中带 & 参数

在 PHP 中处理 URL 中带有 & 的参数时,关键是理解它的来源和如何正确解析。 & 是 HTML 实体,表示字符 & ,通常出现在 HTML 中的链接或表单中,例如:

<a href=”test.php?a=1&amp;b=2″>Link</a>

浏览器在访问这个链接时会自动将 &amp; 解码为 & ,所以 PHP 实际接收到的是:

test.php?a=1&b=2

🧼 如果你从 HTML 中读取原始字符串(比如数据库或模板),并需要还原 &amp; 为 & :

$raw = “a=1&amp;b=2”;
$decoded = html_entity_decode($raw); // 输出: a=1&b=2
parse_str($decoded, $params);
echo $params[‘a’]; // 1
echo $params[‘b’]; // 2

🧼 如果浏览器没有做进一步地转义,你收到的仍旧是未转换的 &amp; 或者转换之后的也是 &amp; .
这种情况少有发生,但也的确会存在,比如 新浪微博 不提供直接向第三方 URL 地址之冬跳转,而是将第三方地址编码,允许用户手工复制地址并再粘贴到浏览器地址栏实现跳转——这实在是技术被政策扭曲到畸形的典型案例。

原地址:
test.php?a=1&b=2
第一次转义后:
test.php?a=1&amp;b=2
第二次转义后:
test.php?a=1&amp;amp;b=2

此时即便浏览器做一遍了 &amp; 到 & 的转义, 在服务器端的程序, 如 PHP 收到的仍旧是未被完全转义后的 URL 地址, 形如
test.php?a=1&amp;b=2

此时,如果要获得预期的参数 b 的正确的数值, 除了上文提到的使用
html_entity_decode + parse_str

这个组合函数外,还可以简单直接了当地、将错就错地获取参数 b 的数值

$b_value = $_REQUEST[‘amp;b’];


—-

Assisted by Microsoft Copilot.
Oct 14, 2025.

此条目发表在计算机技术分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code