2010-04-08 5 views
18

Я использую php 5.3.2, и когда я выполняю завиток, он отображает результат напрямую, не добавляя функцию печати или эха.Curl автоматически отображает результат?

Вот мой код:

<?php 
$pvars = array('query' => 'ice age', 'orderby' => 'popularity'); 
$timeout = 30; 
$myurl = "http://www.website.com"; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $myurl); 
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars); 
$xml = curl_exec($curl); 
curl_close ($curl); 
?> 

Что случилось с моим кодом и почему это отображает результат?

ответ

34

По умолчанию расширение curl выводит результат.

Вам необходимо включить опцию CURLOPT_RETURNTRANSFER, например, так:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

После этого опция включена, curl_exec будет возвращать результат, вместо этого.

+0

Спасибо Брайен;) – Emily

+1

«От PHP 5.1.3, эта опция не имеет никакого эффекта: сырьевая выход всегда возвращается, когда CURLOPT_RETURNTRANSFER используется». – Mawg

-1

после php 5.1 curl всегда отображает результаты, которые вы можете просмотреть в документации. чтобы избежать этого просто сделать:

echo "< span style='display:none'>"; 
$pvars = array('query' => 'ice age', 'orderby' => 'popularity'); 
$timeout = 30; 
$myurl = "http://www.website.com"; 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $myurl); 
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars); 
$xml = curl_exec($curl); 
curl_close ($curl); 

echo"< /span>"; 
Смежные вопросы