2010-04-08 34 views
18

Tôi đang sử dụng php 5.3.2 và khi tôi thực hiện curl, nó hiển thị kết quả trực tiếp mà không cần thêm chức năng in hoặc echo.Curl tự động hiển thị kết quả?

Đây là mã của tôi:

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

Có gì sai với mã của tôi và tại sao nó sẽ hiển thị kết quả?

Trả lời

34

Theo mặc định, tiện ích mở rộng curl sẽ in ra kết quả.

Bạn cần phải kích hoạt tùy chọn CURLOPT_RETURNTRANSFER, như vậy:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

Sau khi lựa chọn được kích hoạt, curl_exec sẽ trả về kết quả, thay thế.

+0

Cảm ơn brian;) – Emily

+1

"Từ PHP 5.1.3, tùy chọn này không có tác dụng: sản lượng nguyên liệu sẽ luôn được trả lại khi CURLOPT_RETURNTRANSFER được sử dụng". – Mawg

-1

sau khi php 5.1 curl luôn hiển thị kết quả như bạn có thể xem trên tài liệu. để tránh điều đó chỉ đơn giản là làm:

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>"; 
Các vấn đề liên quan