PHP base64_编码返回不正确的结果

PHP base64_编码返回不正确的结果,php,Php,我正在尝试在base64中对令牌进行编码,以用作身份验证令牌。但是,base64\u encode似乎没有提供正确的值 $encode = base64_encode("$this->access_token:"); var_dump("$this->access_token:"); var_dump($encode); 结果 string(31) "YfJF3NHGZbVUeWTVv-KtdQYV8Bwsal:" string(44) "WWZKRjNOSEdaYlZVZVdUV

我正在尝试在base64中对令牌进行编码,以用作身份验证令牌。但是,
base64\u encode
似乎没有提供正确的值

$encode = base64_encode("$this->access_token:");
var_dump("$this->access_token:");
var_dump($encode);
结果

string(31) "YfJF3NHGZbVUeWTVv-KtdQYV8Bwsal:"
string(44) "WWZKRjNOSEdaYlZVZVdUVnYtS3RkUVlWOEJ3c2FsOg==" 
如果我在命令行上运行此命令,它将为我提供正确的令牌,该令牌可以与api一起工作

openssl base64 <<< YfJF3NHGZbVUeWTVv-KtdQYV8Bwsal:
WWZKRjNOSEdaYlZVZVdUVnYtS3RkUVlWOEJ3c2FsOgo=
WWZKRjNOSEdaYlZVZVdUVnYtS3RkUVlWOEJ3c2FsOg== (php result for comparison)

我明白了。您的
openssl
正在考虑末尾的换行符。您的PHP代码很好,您应该只使用它

实际上:

EIiLMhGNib9JNH2ob62JpsoQoVNRdltc:
<newline>
EIiLMhGNib9JNH2ob62JpsoQoVNRdltc:

转换为您在openssl中看到的内容,
eiilmhgnib9jnhob62jpsoqovnrdltc:
转换为您在PHP中看到的内容

不应该
base64\u编码($this->access\u令牌:)
be
base64\u编码($this->access\u令牌)?没有引号。我在javascript上尝试了它,它返回的结果与PHP相同。我需要基本身份验证的冒号,谢谢你刚刚添加了
\n
$encode=base64\u encode($this->access\u token:\n”)
EIiLMhGNib9JNH2ob62JpsoQoVNRdltc:
<newline>