2011-01-26 17 views
52

estoy usando el siguiente código:resultados de impresión curl_exec cuando yo no quiero

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_TIMEOUT, 12); 

$result = curl_exec($ch); 

curl_close ($ch); 

Sin embargo, es la impresión de los resultados de inmediato. ¿Es posible poner el resultado de JSON en una variable para que pueda imprimirlo cuando quiero?

+1

en el código que publico no veo ninguna impresión –

+4

Ese es el punto, ese segmento de código está imprimiendo los resultados de curvatura cuando no lo estoy pidiendo también. –

Respuesta

118

Conjunto CURLOPT_RETURNTRANSFER opción:

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

$result = curl_exec($ch); 

por the docs:

CURLOPT_RETURNTRANSFER - TRUE volver a la transferencia como una cadena del valor de retorno de curl_exec() en lugar de la salida directamente en.

+2

Su documento vinculado dice "De PHP 5.1.3, esta opción no tiene ningún efecto: la salida sin procesar siempre se devolverá cuando se use CURLOPT_RETURNTRANSFER". No estoy seguro de entender que, siendo un Mawg de muy poco cerebro, y todavía tengo el mismo problema que O.P – Mawg

+2

Parece que esta nota en la documentación de PHP está relacionada con la opción CURLOPT_BINARYTRANSFER, no con la opción CURLOPT_RETURNTRANSFER. – Kel

+0

Hmm, funcionó bien para mí usando PHP 7.1.1. – carefulnow1

-5

después de php 5.1 curl se mostrará siempre el resultado que se puede ver en la documentación. para evitarlo, simplemente use

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

El comportamiento de 'curl' es configurable, pero si realmente encuentra algo que no se puede configurar para devolver el valor en lugar de imprimirlo, realmente debería usar' ob_start() 'antes de llamarlo, y' ob_get_clean () 'después. El valor de retorno de 'ob_get_clean()' será el contenido que de otro modo se hubiera impreso. Eche un vistazo a la documentación de estas funciones para conocerlas. Tu respuesta realmente no es decente, así que pensé que podrías aprender de esto. No fue para ofenderte. ¡Buena suerte! –

+2

En realidad, el problema con esta respuesta (además de los puntos mencionados por el comentador anterior) es que no responde la pregunta. No se ha mencionado si es una aplicación web o no, por lo que no puede estar seguro de cómo se muestra la salida (incluso podría ser una aplicación de consola). –

1

¿Lo intentó?

curl_setopt($ch, CURLOPT_VERBOSE, 0); 

Esto funcionó para mí!

Cuestiones relacionadas