2010-04-08 10 views
18

J'utilise php 5.3.2 et quand j'exécute un curl, il affiche directement le résultat sans ajouter de fonction d'impression ou d'écho.Curl afficher automatiquement le résultat?

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

Quel est le problème avec mon code et pourquoi il affiche le résultat?

Répondre

34

Par défaut, l'extension curl affiche le résultat.

Vous devez activer l'option CURLOPT_RETURNTRANSFER, comme ceci:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

Après cette option est activée, curl_exec renverra le résultat, au lieu.

+0

Merci brian;) – Emily

+1

« A partir de PHP 5.1.3, cette option n'a pas d'effet: la sortie brute sera toujours retourné lorsque CURLOPT_RETURNTRANSFER est utilisé ». – Mawg

-1

après php 5.1 curl affiche toujours les résultats comme vous pouvez voir sur la documentation. pour éviter que simplement:

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