当我回显它时,我有两个看起来相同的字符串,但是当var_dump()它们出现时,它们是不同的字符串类型:
Echo:
http://blah
http://blah
var dump:
string(14) "http://blah"
string(11) "http://blah"
strToHex:
%68%74%74%70%3a%2f%2f%62%6c%61%68%00%00%00
%68%74%74%70%3a%2f%2f%62%6c%61%68
Run Code Online (Sandbox Code Playgroud)
当我比较它们时,它们会返回false.如何操作字符串类型以便我可以执行返回true的比较.字符串11和字符串14有什么区别?我确信有一个简单的解决方案,但还没有找到任何东西,无论我如何内爆,爆炸,UTF8编码等他们不会比较或更改类型的字符串.
谢谢你的帮助!
彼得.
我正在使用亚马逊MWS PHP MarketplaceWebService PHP API将库存Feed数据提交给亚马逊.
https://docs.developer.amazonservices.com/en_US/feeds/Feeds_SubmitFeed.html
我可以通过卖家中央上传库存gui手动提交我生成的库存装载机平面文件而不会出错.
使用API中的SubmitFeed示例提交相同的平面文件我总是得到"不正确的模板类型错误".
我的身份验证和市场数据都是正确的.
Feed数据是$ _feed,我正在从api创建feed数据流
$feedHandle = fopen('php://temp', 'rw+');
fwrite($feedHandle, $_feed);
rewind($feedHandle);
Run Code Online (Sandbox Code Playgroud)
并使用亚马逊的示例代码提交它
$marketplaceIdArray = array("Id" => array(MARKETPLACE_ID));
$parameters = array (
'Merchant' => MERCHANT_ID,
'MarketplaceIdList' => $marketplaceIdArray,
'FeedType' => '_POST_FLAT_FILE_INVLOADER_DATA_',
'FeedContent' => $feedHandle,
'PurgeAndReplace' => false,
'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true)),
);
rewind($feedHandle);
$request = new \MarketplaceWebService_Model_SubmitFeedRequest($parameters);
$_result=$this->invokeSubmitFeed($service, $request);
Run Code Online (Sandbox Code Playgroud)
Feed提交没有错误,但是当我检查提交状态时,我总是从Amazon获得不正确的模板类型错误.
如果我将feed数据写入单独的文件,或者获取流的副本并将其写入测试文件,例如
// TEST copy submitted file to temp file
$copystream = fopen('/copystream.txt', 'w');
stream_copy_to_stream($streamHandle, $copystream);
Run Code Online (Sandbox Code Playgroud)
我可以确认亚马逊MWS API卷曲上传(在client.php中)使用的数据是正确的,因为我也可以通过卖家中心手动上传此测试文件(copystream.txt)而不会出错. …