urldecode() 不解码 + 号
urldecode() not decoding the + sign
我正在使用 PayPal 支付系统,我想在自定义字段中发送 2 个值。因此我使用了 urlencode(json_encode()) 功能。一个没有 urlencoding 的例子。
$customData = array();
$customData['invoiceID'] = $invoiceID;
$customData['username'] = urlencode($_GET['username']);
$p->add_field('custom', urlencode(json_encode($customData)));
输出为:
%7B%22invoiceID%22%3A108674%2C%22username%22%3A%22Just%2Btesting%22%7D
urldecoding 和 jsondecoding 时所需的输出:
{"invoiceID":108674,"username":"Just testing"}
但是在 urldecoding 和 jsondecoding 之后它给了我这个:
{"invoiceID":108674,"username":"Just+testing"}
此问题的解决方法是再次对用户名本身进行 urldecode。但是,为什么我必须将 urldecode 加倍才能获得我仅使用一次 运行 此函数进行 urlencode 的值?
您似乎对数据应用了两次 urlencode()
,因此您需要应用两次 urldecode()
或删除其中一次。
我认为 "custom" 字段用于在另一端识别您的请求,对吗?因此,该字段供您使用,不适用于 paypal。我认为对其进行编码是个好主意。但是,如果你想让它在 paypals 后端生存,你可能想使用 base64encode 和 base64decode。
我正在使用 PayPal 支付系统,我想在自定义字段中发送 2 个值。因此我使用了 urlencode(json_encode()) 功能。一个没有 urlencoding 的例子。
$customData = array();
$customData['invoiceID'] = $invoiceID;
$customData['username'] = urlencode($_GET['username']);
$p->add_field('custom', urlencode(json_encode($customData)));
输出为:
%7B%22invoiceID%22%3A108674%2C%22username%22%3A%22Just%2Btesting%22%7D
urldecoding 和 jsondecoding 时所需的输出:
{"invoiceID":108674,"username":"Just testing"}
但是在 urldecoding 和 jsondecoding 之后它给了我这个:
{"invoiceID":108674,"username":"Just+testing"}
此问题的解决方法是再次对用户名本身进行 urldecode。但是,为什么我必须将 urldecode 加倍才能获得我仅使用一次 运行 此函数进行 urlencode 的值?
您似乎对数据应用了两次 urlencode()
,因此您需要应用两次 urldecode()
或删除其中一次。
我认为 "custom" 字段用于在另一端识别您的请求,对吗?因此,该字段供您使用,不适用于 paypal。我认为对其进行编码是个好主意。但是,如果你想让它在 paypals 后端生存,你可能想使用 base64encode 和 base64decode。