Hướng dẫn php file_get_contents

- Hàm file_get_contents[] dùng để lấy nội dung của một tập tin.

- Cú pháp:

file_get_contents[đường dẫn đến tập tin mà bạn muốn lấy nội dung]

- Tôi có một tập tin myCode_01.html nằm ở đường dẫn //webcoban.vn/file/myCode_01.html với nội dung như sau:


    
        Lap Trinh Web
    
    
        

Tai lieu huong dan hoc Lap Trinh Web

HTML & CSS

Ngon ngu lap trinh PHP

- Để lấy nội dung của tập tin myCode_01.html thì tôi sử dụng đoạn mã sau:

- Khi đó, biến $text sẽ có giá trị là chuỗi:


    
        Lap Trinh Web
    
    
        

Tai lieu huong dan hoc Lap Trinh Web

HTML & CSS

Ngon ngu lap trinh PHP

- Ví dụ phía trên là chúng ta lấy toàn bộ nội dung của tập tin, để lấy một phần nội dung của tập tin thì chúng ta sử dụng cú pháp như sau:

file_get_contents[đường dẫn đến tập tin mà bạn muốn lấy nội dung, 0, NULL, start, length]

- Trong đó:

Tham sốYêu cầuMô tả
start Không bắt buộc

- Chỉ định vị trí mà bạn muốn bắt đầu lấy.

length Không bắt buộc

- Chỉ định số lượng byte mà bạn muốn lấy.

- Biến $text sẽ có giá trị là chuỗi:

- Biến $text sẽ có giá trị là chuỗi:


    
        Lap Trin

- Biến $text sẽ có giá trị là chuỗi:

ml>
    
        Lap Trin

File_get_contents là một trong những hàm thường gặp khi làm việc với ngôn ngữ PHP. Để hiểu và sử dụng thành thạo bạn hãy xem các ví dụ cụ thể sau.

Định nghĩa

Hàm file_get_contents[] được sử dụng để đọc nội dung của file thành một chuỗi.

Cú pháp:

file_get_contents[path, include_path, context, start, max_length]

  • path: Cần thiết. Chỉ định đường dẫn đến tệp để đọc
  • include_path: Không bắt buộc. Đặt tham số này thành ‘1’ nếu bạn cũng muốn tìm kiếm tệp trong include_path [trong php.ini]
  • context: Không bắt buộc. Chỉ định ngữ cảnh của xử lý tệp. Ngữ cảnh là một tập hợp các tùy chọn có thể sửa đổi hành vi của một luồng. Có thể được bỏ qua bằng cách sử dụng NULL.
  • start: Không bắt buộc. Chỉ định vị trí trong tệp để bắt đầu đọc. Giá trị âm tính từ cuối tệp
  • max_length: Không bắt buộc. Chỉ định độ dài tối đa của dữ liệu được đọc. Mặc định được đọc thành EOF

Để hiểu rõ hơn hãy đi vào ví dụ sau:

Khi chạy file php đó bạn sẽ lấy được nội dung của toàn bộ website.

Bây giờ mình sẽ xuất ra chuỗi đó thành mảng để đọc thông tin dễ dàng hơn.

Để lưu file [ảnh, video] từ 1 url, trong php có rất nhiều cách làm, chúng tôi VinaSupport đã tổng hợp 4 cách sau:

  1. Hàm file_get_contents, file_put_contents
  2. Hàm copy
  3. Sử dụng fopen
  4. Sử dụng CURL

1. Hàm file_get_contents, file_put_contents

Sử dụng hàm file_get_contents để lấy nội dung của của url và file_put_contents để lưu lại nội dung thành file.

$url = '//vinasupport.com/assets/img/vinasupport_logo.png';
$saveUrl = '/tmp/vinasupport_logo.png';
file_put_contents[$saveUrl, file_get_contents[$url]];

Tham khảo Doc của PHP ở đây.

  • //www.php.net/manual/en/function.file-get-contents.php
  • //www.php.net/manual/en/function.file-put-contents.php

Yêu cầu tham số allow_url_fopen trong php.ini phải set là true

2. Hàm copy

copy['//vinasupport.com/assets/img/vinasupport_logo.png', '/tmp/vinasupport_logo.png'];

Tham khảo Doc của hàm copy ở đây, nó cũng yêu cầu tham số allow_url_fopen trong php.ini phải set là true

  • //www.php.net/manual/en/function.copy.php

3. Sử dụng fopen

Một phương án khác là các bạn sử dụng hàm fopen, fread, fwrite để xử lý lưu file như bên dưới

$in = fopen['//vinasupport.com/assets/img/vinasupport_logo.png', "rb"];
$out = fopen['/tmp/vinasupport_logo.png', "wb"];
while [$chunk = fread[$in,8192]]
{
    fwrite[$out, $chunk, 8192];
}
fclose[$in];
fclose[$out];

4. Sử dụng CURL

Đây là phương án xử lý lưu file tốt nhất và hiệu quả nhất hiện này với rất nhiều tùy chọn.

set_time_limit[0];
$image = '//vinasupport.com/assets/img/vinasupport_logo.png';
// Save image name
$saveImageName = basename[$image];
// Save Image Path
$saveImagePath = '/tmp/' . $saveImageName;
// This is the file where we save the information
$fp = fopen [$saveImagePath, 'w+'];
// Here is the file we are downloading, replace spaces with %20
$ch = curl_init[str_replace[" ","%20",$image]];
curl_setopt[$ch, CURLOPT_TIMEOUT, 50];
// write curl response to file
curl_setopt[$ch, CURLOPT_FILE, $fp];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
// get curl response
curl_exec[$ch];
curl_close[$ch];
fclose[$fp];

Nguồn: vinasupport.com

Chủ Đề