2011-01-11 42 views
6

Tôi muốn phân tích cú pháp một số thông tin ra khỏi trang html. Hiện nay tôi giải quyết vấn đề như thế này:Chức năng tương đương cho file_get_contents()?

header("Content-type: text/plain");  
$this->pageSource = file_get_contents ($this->page); 
header("Content-type: text/html"); 

$this->page là url của trang web. này hoạt động tốt trên XAMPP, nhưng khi tôi tải lên kịch bản của tôi trên máy chủ web của tôi, tôi nhận được thông báo lỗi sau:

Cảnh báo: file_get_contents() [function.file-get-nội dung]: http: // wrapper bị tắt trong cấu hình máy chủ của allow_url_fopen = 0

Vì vậy, rõ ràng là tôi không được phép thực hiện chức năng đó trên máy chủ web của mình.

Vì vậy, có chức năng tương đương để giải quyết vấn đề của tôi không?

+3

Bạn đã thử uốn cong chưa? –

+0

Bạn có thể sử dụng chức năng, nhưng không phải với URL, chỉ với các tệp cục bộ, đó là những gì thông báo lỗi cho bạn biết. – Tobias

+1

'file_get_contents()' có thể được sử dụng để mở URL, nhưng nó không thể xử lý thời gian chờ hoặc làm việc sau một proxy. –

Trả lời

19

Trên thực tế chức năng file_get_contents không bị vô hiệu hóa,
nhưng allow_url_fopen bị vô hiệu hóa

bạn có thể thay thế nó bằng curl

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $this->page); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$this->pageSource = curl_exec($ch); 
curl_close($ch); 

Tuy nhiên, nếu bạn máy chủ khối lưu lượng gửi đi, curl không giúp quá

+0

Tôi có thể sử dụng CUrl để lấy nội dung và sau đó điều khiển nó bằng cách sử dụng Simple Html Dom Parser không? – Silentbang

+0

có, sử dụng cùng với hàm 'simplexml_load_string' – ajreal

2

cURL là giải pháp tiêu chuẩn thông thường.

0

Sử dụng curl và tại sao bạn cần thay đổi tiêu đề thành văn bản thuần để truy xuất dữ liệu? Điều này là không cần thiết nếu bạn đang truy xuất dữ liệu.

0

nếu bạn có curl, hãy sử dụng nó là điều tuyệt vời cho việc này.


      $urlx = 'http://yoururl'; 

      $data="from=$from&to=$to&body=".urlencode($body)."&url=$url"; 
//set post parameters 
      $process = curl_init($urlx); 
//init curl connection 
      curl_setopt($process, CURLOPT_HEADER, 0); 

      curl_setopt($process, CURLOPT_POSTFIELDS, $data); 

      curl_setopt($process, CURLOPT_POST, 1); 

      curl_setopt($process, CURLOPT_RETURNTRANSFER,1); 

      curl_setopt($process,CURLOPT_CONNECTTIMEOUT,1); 

      $resp = curl_exec($process); 
//your content 
      curl_close($process); 

 
Các vấn đề liên quan