2010-04-08 1 views
18

Ich benutze PHP 5.3.2 und wenn ich eine Curl ausführen, wird das Ergebnis direkt angezeigt, ohne eine Druck- oder Echo-Funktion hinzuzufügen.Curl zeigt automatisch das Ergebnis an?

Hier ist mein Code:

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

Was mit meinem Code falsch ist und warum es zeigt das Ergebnis?

Antwort

34

Standardmäßig druckt die Curl-Erweiterung das Ergebnis aus.

Sie müssen die CURLOPT_RETURNTRANSFER Option aktivieren, etwa so:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

Nachdem diese Option aktiviert ist, curl_exec wird das Ergebnis zurück, statt.

+0

Dank brian;) – Emily

+1

„Ab PHP 5.1.3, hat diese Option keine Auswirkung: Die Rohausgangssignal wird immer zurückgegeben werden, wenn CURLOPT_RETURNTRANSFER verwendet wird“. – Mawg

-1

nach php 5.1 curl zeigt immer Ergebnisse, wie Sie auf der Documentation sehen können. zu vermeiden, dass einfach tun:

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