2010-04-08 17 views
18

Estoy usando php 5.3.2 y cuando ejecuto un curl, muestra el resultado directamente sin agregar una función de impresión o eco.Curl muestra automáticamente el resultado?

Aquí está mi código:

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

¿Qué hay de malo en mi código y por qué se muestra el resultado?

Respuesta

34

De forma predeterminada, la extensión de curl imprime el resultado.

necesita habilitar la opción CURLOPT_RETURNTRANSFER, así:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

Después de que la opción está activada, curl_exec devolverá el resultado, en su lugar.

+0

Gracias Brian;) – Emily

+1

"A partir de PHP 5.1.3, esta opción no tiene ningún efecto: siempre se devolverá la salida completa cuando se utiliza CURLOPT_RETURNTRANSFER". – Mawg

-1

después de php 5.1 curl siempre muestra resultados como se puede ver en la documentación. para evitar que simplemente hacer:

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