Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

PHP – Hàm mb_ereg_replace_callback() – Thay thế regex với callback hỗ trợ đa byte

Trong PHP, hàm mb_ereg_replace_callback() được dùng để thực hiện tìm kiếm và thay thế biểu thức chính quy với hỗ trợ đa byte sử dụng một hàm callback. Nó sẽ quét chuỗi và khớp với mẫu, sau đó thay thế văn bản khớp bằng kết quả trả về của hàm callback. Hàm này tương tự như mb_ereg_replace(). Được hỗ trợ từ PHP 5.4 trở lên.

Cú pháp

string mb_ereg_replace_callback(string $pattern, callable $callback, string $string, ?string $options = null)

Tham số

Hàm chấp nhận bốn tham số sau:

  • $pattern – Mẫu biểu thức chính quy. Có thể dùng ký tự đa byte.

  • $callback – Hàm này sẽ được gọi và truyền một mảng các phần tử khớp trong chuỗi đối tượng, và phải trả về chuỗi thay thế.

  • $string – Chuỗi cần kiểm tra.

  • $options – Tùy chọn tìm kiếm.

Lưu ý – Hàm callback thường chỉ cần cho mb_ereg_replace_callback() ở một nơi duy nhất. Bạn cũng có thể dùng hàm ẩn danh (anonymous function) để khai báo callback ngay trong lời gọi mb_ereg_replace_callback(). Nhờ đó, tất cả thông tin cho lời gọi nằm ở một nơi và không làm rối không gian tên hàm với tên hàm callback không dùng nơi khác.

Giá trị trả về

mb_ereg_replace_callback() trả về chuỗi kết quả khi thành công hoặc false khi lỗi. Trả về null nếu chuỗi không hợp lệ cho mã hóa hiện tại.

Ví dụ 1 – Sử dụng hàm callback thông thường

<?php
$result = "April Fools day is 04/01/2019\n";
$result .= "Next match is 12/24/2021\n";

// Hàm callback
function next_year($matches) {
    return $matches[1] . ($matches[2] + 1);
}

echo mb_ereg_replace_callback(
    "(\d{2}/\d{2}/)(\d{4})",
    "next_year",
    $result
);
?>

Kết quả

April Fools day is 04/01/2020
Next match is 12/24/2022

Ví dụ 2 – Sử dụng hàm ẩn danh

<?php
// Sử dụng hàm ẩn danh
$result = "April Fools day is 04/01/2019\n";
$result .= "Next match is 12/24/2021\n";

echo mb_ereg_replace_callback(
    "(\d{2}/\d{2}/)(\d{4})",
    function ($matches) {
        return $matches[1] . ($matches[2] + 1);
    },
    $result
);
?>

Kết quả

April fools day is 04/01/2020
Next match is 12/24/2022

Lưu ý – Ở Ví dụ 2, dùng hàm ẩn danh và bỏ hàm callback, nhưng kết quả vẫn y nguyên.