2015-10-26 34 views
0

我在閱讀包含URL的CSV文件。我試圖輸出這些URL的結果,但面臨奇怪的問題。 我似乎無法理解,當您嘗試打印第一行的項目時,爲什麼此代碼不打印變量$輸出。閱讀URL時,CURL不返回任何輸出

這是一個包含兩個記錄我的CSV文件:

www.serverfault.com 
www.stackoverflow.com 

這是我的代碼

<?php 
$myfile = fopen("products.csv", "r") or die("Unable to open file!"); 

    while(!feof($myfile)) 
    { 
     $myline = fgets($myfile); 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $myline); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     $output = curl_exec($ch); 
     curl_close($ch); 

     if($myline == "www.serverfault.com") 
     { 
      echo $output; 
     } 
    } 
?> 

請注意,在CSV文件中的第一個記錄是www.serverfault.com它從不打印$輸出。如果我將這條記錄移動到第二行,那麼它會打印$輸出,但是它現在不在第一行打印$ output for www.stackoverflow.com。

發生了什麼事?

+0

你只是假設成功。 curl_exec在失敗時返回布爾值false,打印爲零長度字符串。 'if($ output === false){die(curl_error($ ch)); }'並且不要忘記檢查字符串上的空格(例如換行符)。你的$ myline可能實際上是'www .... com \ n'什麼的。 –

+0

你對這兩點都絕對正確。 $ output是錯誤的,結果發現URL末尾有一個空格。謝謝。請發表您的評論作爲答案,以便我可以接受它。 –

回答

1

你只是假設成功。 curl_exec在失敗時返回布爾值false,打印爲零長度字符串。在您的字符串

if($output === false) { 
    die(curl_error($ch)); 

} 

而且不要忘記檢查空白(例如換行):

添加此。您的$myline實際上可能是www....com\n或類似的。