TopDev

Các hàm kiểm soát đầu ra - PHP Output Control

minhu 📖 3 phút đọc

PHP cung cấp một số hàm để kiểm soát và quản lý đầu ra, cho phép bạn lưu trữ, điều chỉnh và gửi đầu ra từ các script PHP một cách linh hoạt. Dưới đây là các hàm kiểm soát đầu ra phổ biến và ví dụ minh họa cách sử dụng chúng.

Các hàm kiểm soát đầu ra#

  • ob_start(): Bắt đầu một bộ đệm đầu ra.

ob_start(); echo "This will be buffered, not immediately sent."; $content = ob_get_contents(); ob_end_clean(); // Kết thúc bộ đệm và xóa nội dung bộ đệm echo "Buffered content: " . $content;

  • ob_get_contents(): Lấy nội dung của bộ đệm đầu ra hiện tại.

ob_start(); echo "Hello, world!"; $content = ob_get_contents(); ob_end_clean(); echo $content; // Hello, world!

  • ob_end_clean(): Kết thúc bộ đệm đầu ra hiện tại và xóa nội dung bộ đệm.

ob_start(); echo "This will be buffered."; ob_end_clean(); // Nội dung này sẽ bị xóa và không được gửi ra

  • ob_end_flush(): Kết thúc bộ đệm đầu ra hiện tại và gửi nội dung bộ đệm ra trình duyệt.

ob_start(); echo "This will be buffered."; ob_end_flush(); // Nội dung này sẽ được gửi ra trình duyệt

  • ob_flush(): Gửi nội dung bộ đệm ra trình duyệt nhưng không kết thúc bộ đệm.

ob_start(); echo "This will be buffered."; ob_flush(); // Nội dung này sẽ được gửi ra trình duyệt nhưng bộ đệm vẫn tiếp tục echo " More content."; ob_end_flush(); // Gửi thêm nội dung và kết thúc bộ đệm

  • ob_clean(): Xóa nội dung của bộ đệm hiện tại mà không kết thúc bộ đệm.

ob_start(); echo "This will be buffered."; ob_clean(); // Nội dung này sẽ bị xóa khỏi bộ đệm echo " New content."; ob_end_flush(); // Chỉ có " New content." sẽ được gửi ra trình duyệt

  • ob_get_length(): Trả về độ dài của nội dung trong bộ đệm đầu ra hiện tại.

ob_start(); echo "Hello, world!"; $length = ob_get_length(); // 13 ob_end_clean(); echo "Content length: " . $length;

  • ob_get_level(): Trả về số mức độ đệm đầu ra hiện tại.

ob_start(); echo ob_get_level(); // 1 ob_start(); echo ob_get_level(); // 2 ob_end_clean(); echo ob_get_level(); // 1 ob_end_clean();

  • ob_list_handlers(): Trả về một mảng các bộ đệm đầu ra hiện đang hoạt động.

ob_start(); ob_start(); print_r(ob_list_handlers()); // Array ( [0] => default output handler [1] => default output handler ) ob_end_clean(); ob_end_clean();

Ví dụ thực tế#

Bắt đầu bộ đệm đầu ra và xử lý nội dung

` ob_start(); echo "

Hello, world!

"; $content = ob_get_contents(); ob_end_clean();

$content = str_replace("world", "PHP", $content); echo $content; //

Hello, PHP!

`

Bộ đệm đầu ra để tạo cache đơn giản

` $cacheFile = 'cache.html'; $cacheTime = 60; // 1 phút

if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < $cacheTime)) { // Đọc cache và gửi ra trình duyệt readfile($cacheFile); } else { // Bắt đầu bộ đệm ob_start();

// Nội dung động
echo "<h1>Hello, world!</h1>";
echo "<p>This is the current time: " . date('Y-m-d H:i:s') . "</p>";

// Lưu nội dung vào cache
$content = ob_get_contents();
file_put_contents($cacheFile, $content);

// Gửi nội dung ra trình duyệt
ob_end_flush();

} `

Sử dụng bộ đệm đầu ra để thay đổi tiêu đề sau khi nội dung đã được tạo

ob_start(); echo "<h1>Content with a Header</h1>"; header('X-Custom-Header: This is a custom header'); ob_end_flush(); // Tiêu đề được gửi ra cùng với nội dung

Tóm tắt#

Các hàm kiểm soát đầu ra trong PHP cung cấp một công cụ mạnh mẽ để quản lý và thao tác với đầu ra từ các script PHP. Bằng cách sử dụng các hàm này, bạn có thể tối ưu hóa việc gửi nội dung tới trình duyệt, tạo cache, hoặc thậm chí là xử lý và thay đổi nội dung trước khi gửi ra.

Bài liên quan trong #PHP

✓ Đã sao chép link