2015-10-26 117 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或类似的。