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

PHP POST请求中含&符号的参数如何正确获取?

解决PHP中获取含特殊字符(&)的参数问题

这问题很典型——你遇到的是URL特殊字符的解析问题!当你在URL里传company=Abc & lmn时,这里的&被浏览器/服务器当成了参数分隔符,所以服务器会把&后面的lmn当成一个新的参数,自然company就只拿到Abc了。下面给你两种场景的解决方案:

1. GET请求(URL传参)的处理

如果是通过URL传递参数,必须对包含特殊字符(&、空格、=等)的参数值做URL编码,把特殊字符转换成服务器能识别的编码格式:

  • 手动编码的话,Abc & lmn要改成Abc%20%26%20lmn(%20是空格的编码,%26是&的编码)
  • 用PHP生成URL的话,用urlencode()函数自动处理:
    $companyValue = 'Abc & lmn';
    $encodedCompany = urlencode($companyValue);
    // 拼接成URL:?session1=123&token=2&company=' . $encodedCompany;
    
    这样拼接出来的URL里,company的参数值是编码后的,服务器解析时就会把它当成完整的字符串,$_REQUEST['company']就能拿到Abc & lmn。

2. POST请求的处理

如果是通过表单或者API发送POST请求,处理起来更简单:

  • 普通表单提交:确保表单的enctype是默认的application/x-www-form-urlencoded(一般不用特意写,浏览器会自动对表单数据做URL编码),直接用$_POST['company']就能获取完整值。
  • 手动构造POST请求(比如用CURL):用http_build_query()函数来生成POST数据,它会自动帮你编码所有参数值:
    $postParams = [
        'session1' => '123',
        'token' => '2',
        'company' => 'Abc & lmn'
    ];
    $postData = http_build_query($postParams);
    // 然后用CURL发送$postData作为POST内容即可
    

顺便修正你代码里的小细节

我注意到你代码里用了&&,这应该是HTML转义后的字符,在PHP里逻辑判断要用&&(逻辑与),而不是&(位与),所以修正后的代码如下:

if(isset($_REQUEST["session1"]) && isset($_REQUEST["token"]) && isset($_REQUEST["company"])){
    $session1 = $_REQUEST["session1"];
    $token = $_REQUEST["token"];
    $company = $_REQUEST["company"];
    $result = $session1 ." ". $token ." ". $company;
    echo $result;
}

这样调整后,只要参数传递时做了正确的编码,就能输出完整的123 2 Abc & lmn啦!

内容的提问来源于stack exchange,提问作者TejpalBh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:14:14