2012-06-22 86 views
2

我试图检查一个卷曲的输出。检查cURL输出PHP

<?php 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"https://blablabla.com"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    $curlresult=curl_exec ($ch); 
     curl_close ($ch); 



    if ($curlresult == "OK") { 
     $result = "The curl action was succeeded! (OUTPUT of curl is: ".$curlresult.")"; 
    } else { 
     $result = "The curl action has FAILED! (OUTPUT of curl is: ".$curlresult.")"; 
    } 

echo $result; 

?> 

URL(https://blablabla.com)是一个只显示OK的URL。 因此,使用的代码,我希望看到

“的卷曲行动成功(卷曲的输出是:OK)!”

但是,我做什么,得到的是:

卷曲动作失败! (卷曲的输出是:OK)

我想我犯了一些愚蠢的错误。我如何检查https://blablabla.com是否包含“OK”?

谢谢!

+0

请提供一个vardump $ curlresult –

+0

我猜在“OK”之前有一些额外的输出。也许是换行符。 –

+0

你应该检查HTTP状态码 –

回答

3

你可能之前或OK或其它字符后获得额外空格。

我建议做上述通过测试究竟是什么与var_dump($curlresult);print_r($curlresult);

阵列内建议的人或者,也可以代替匹配$ curlresult但仅相当于“确定”,就可以测试什么,如果$ curlresult在其中包含“OK”。

<?php 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"https://blablabla.com"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    $curlresult=curl_exec ($ch); 
     curl_close ($ch); 



    if (preg_match("/OK/i", $curlresult)) { 
     $result = "The curl action was succeeded! (OUTPUT of curl is: ".$curlresult.")"; 
    } else { 
     $result = "The curl action has FAILED! (OUTPUT of curl is: ".$curlresult.")"; 
    } 

echo $result; 

?> 
+0

确实,使用var_dump,我发现确定后有一个空格:)。愚蠢我没有看到.. 使用(preg_match(“/ OK/i”,$ curlresult))我修复了这个问题。感谢大家!! – mitch2k

+0

很高兴你发现它!如果这对我们有帮助,你会如此友善,以便将其标记为正确的答案。 :)感谢米奇! – Joshua

1

你应该尝试var_dump($curlresult);,看看你真正得到的,否则我认为有可能是使用SSL(HTTPS),快速解决问题这个(接受任何服务器证书):

<?php 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"https://blablabla.com"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    $curlresult=curl_exec ($ch); 
    curl_close ($ch); 



    if ($curlresult == "OK") { 
     $result = "The curl action was succeeded! (OUTPUT of curl is: ".$curlresult.")"; 
    } else { 
     $result = "The curl action has FAILED! (OUTPUT of curl is: ".$curlresult.")"; 
    } 

//var_dump($curlresult); 
echo $result; 

?> 
0

见,在此代码块:

if ($curlresult == "OK") { 
     $result = "The curl action was succeeded! (OUTPUT of curl is: ".$curlresult.")"; 
    } else { 
     $result = "The curl action has FAILED! (OUTPUT of curl is: ".$curlresult.")"; 
    } 

假设$curlresult是字符串,先试着var_dump($curlresult)知道的是,从这个调用返回的数据类型是什么反应。可能是返回类型不是字符串。
然后在if条件中使用该数据类型的检查。

2

你可以做

$info = curl_getinfo($ch); 
var_dump($info); 

为您提供了HTTP状态代码信息返回和连接时间等等