2010-04-08 12 views
18

Używam php 5.3.2, a kiedy wykonuję curl, wyświetlam wynik bezpośrednio, bez dodawania funkcji drukowania lub echa.Curl automatycznie wyświetla wynik?

Oto mój kod:

<?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); 
?> 

Co jest nie tak z moim kodu i dlaczego go wyświetla wynik?

Odpowiedz

34

Domyślnie rozszerzenie curl drukuje wynik.

Musisz włączyć opcję CURLOPT_RETURNTRANSFER, tak:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

Po że opcja ta jest włączona, curl_exec zwróci wynik, zamiast.

+0

Dzięki Brian;) – Emily

+1

„Od PHP 5.1.3, opcja ta nie ma wpływu: zawsze będą zwrócone wyjście surowy kiedy CURLOPT_RETURNTRANSFER służy”. – Mawg

-1

po php 5.1 curl zawsze wyświetla wyniki, jak można zobaczyć na dokumentacji. aby uniknąć sytuacji, po prostu zrobić:

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