经过几个小时的调试后,我终于确定由于某种原因在运行我的小脚本的特定网络服务器上,两个相等的字符串显然被解释为彼此不相等。
这对我来说完全没有意义,因为我尝试使用“==”和“strcmp”进行比较。虽然这个代码块在我的托管上完美运行,但是运行我的脚本的人仍然会失败。
记录的结果是......
爆炸前的数据:结果=成功;
爆炸后的数据:结果=成功
NO
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $GLOBALS["api_url"]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$data = curl_exec($ch);
curl_close($ch);
$data1_log = "DATA BEFORE EXPLODE: " . $data;
log_activity($data1_log);
$data = explode(";",$data);
$data2_log = "DATA AFTER EXPLODE: " . $data[0];
log_activity($data2_log);
if (strcmp($data[0], "result=success") == 0)
{
log_activity("YES");
}
else
{
log_activity("NO");
}
答案 0 :(得分:0)
为什么不尝试在修剪中使用修剪($ data [0]);并进行比较。
答案 1 :(得分:0)
使用trim()(注意第二个参数,在您的情况下接受其他字符,例如“;”)以及比较前两个字符串上的strtolower()
或strtoupper()
。
此外,如果您可以选择更改API响应,请尝试实现JSON响应,而不是返回纯字符串。它将减少内存密集度并且更易于维护。