【问题标题】:curl_exec printing results when I don't want tocurl_exec 在我不想的时候打印结果
【发布时间】:2011-01-26 11:18:19
【问题描述】:

我正在使用以下代码:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_TIMEOUT, 12); 

$result = curl_exec($ch);

curl_close ($ch);

但是它会立即打印结果。是否可以将 JSON 结果放入变量中,以便我可以在需要时打印出来?

【问题讨论】:

  • 在你发布的代码中我没有看到任何打印
  • 这就是重点,当我没有询问时,那段代码正在打印 curl 结果。

标签: php curl


【解决方案1】:

设置CURLOPT_RETURNTRANSFER 选项:

// ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);

the docs:

CURLOPT_RETURNTRANSFER - TRUE 将转账作为curl_exec()的返回值的字符串返回,而不是直接输出。

【讨论】:

  • 您的链接文档显示“从 PHP 5.1.3 开始,此选项无效:使用 CURLOPT_RETURNTRANSFER 时将始终返回原始输出”。我不太确定我是否理解这一点,作为一个大脑很少的 Mawg,我仍然遇到与 O.P 相同的问题
  • 看起来 PHP 文档中的这个注释与 CURLOPT_BINARYTRANSFER 选项有关,而不是 CURLOPT_RETURNTRANSFER 选项。
【解决方案2】:

你试过了吗?

curl_setopt($ch, CURLOPT_VERBOSE, 0);

这对我有用!

【讨论】:

    【解决方案3】:

    在 php 5.1 之后 curl 将始终显示结果,您可以在文档中查看。为了避免它只需使用

    echo "< span style='display:none'>";
    
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    
    curl_setopt($ch, CURLOPT_TIMEOUT, 12);
    
    $result = curl_exec($ch);
    
    curl_close ($ch);
    
    echo"< /span>";
    

    【讨论】:

    • curl 的行为是可配置的,但是如果您真的遇到无法配置为返回值而不是打印它的东西,您应该在调用它之前真正使用ob_start() , 和ob_get_clean() 之后。 ob_get_clean() 的返回值将是否则会被打印的内容。查看这些函数的文档以了解它们。你的回答真的不太好,所以我想你可以从中学习。没有冒犯你的意思。祝你好运!
    • 实际上这个答案的问题(除了前面评论者提到的几点)是它没有回答这个问题。没有提到它是否是 Web 应用程序,因此您无法确定输出的显示方式(甚至可能是控​​制台应用程序)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 2018-11-25
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多