2012-06-22 84 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狀態代碼信息返回和連接時間等等