当我不想使用curl_exec打印结果时


78

我正在使用以下代码:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_TIMEOUT, 12); 

$result = curl_exec($ch);

curl_close ($ch);

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


1
在您发布的代码中,我看不到任何打印内容
Haim Evgi 2011年

6
关键是,那段代码是在我也不问的时候打印curl结果。
奥利弗·贝叶斯·谢尔顿

Answers:


173

设置CURLOPT_RETURNTRANSFER选项:

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

$result = curl_exec($ch);

根据文档

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


2
您的链接文档说:“从PHP 5.1.3开始,此选项无效:使用CURLOPT_RETURNTRANSFER时,始终会返回原始输出”。我不太确定自己是否了解这一点,因为它是一个大脑很小的狼蛛,但我仍然
遇到

3
看起来PHP文档中的此注释与CURLOPT_BINARYTRANSFER选项有关,而不与CURLOPT_RETURNTRANSFER选项有关。
凯尔2014年


-6

PHP 5.1curl将始终显示结果后,您可以在文档中查看。为了避免它简单地使用

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>";

4
curl的行为是可配置的,但是如果确实遇到无法配置为返回值而不是打印值的东西,则应ob_start()在调用它之前和ob_get_clean()之后使用它。返回值ob_get_clean()将是本应打印的内容。查看这些功能的文档以了解它们。您的回答确实不合理,所以我认为您可以从中学习。并不是要冒犯你。祝好运!
塔玛斯·巴尔塔2015年

3
实际上,此答案的问题(除了先前的评论者提到的要点之外)是它没有回答问题。尚未提及它是否是Web应用程序,因此您无法确定输出的显示方式(甚至可能是控​​制台应用程序)。
mark.sagikazar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.