Hàm preg_replace trong PHP

Đây là một trong các hàm preg được sử dụng nhiều khi thao tác chuỗi trong PHP. Nó có nhiệm vụ thay thế một phần trong một chuỗi đầu vào bằng một chuỗi con khác. Chúng ta sẽ đi vào ví dụ cho dễ hiểu.

$str = 'nguyễn đức anh';
$pattern = '/đức/';
echo preg_replace($pattern, 'hoàng', $str);

// kết quả: nguyễn hoàng anh

Ở đây bạn thấy là mẫu $pattern được thay thế bằng chuỗi mong muốn ‘hoàng’ trong chuỗi lớn đầu vào $str.

Trong trướng hợp mẫu $pattern không có trong chuỗi lớn $str, không có thay đổi nào xảy ra cả. Ví dụ:

$str = 'nguyễn đức anh';
$pattern = '/văn/';
echo preg_replace($pattern, 'hoàng', $str);

// kết quả: nguyễn đức anh
// vì văn không có trong chuỗi $str

Cú pháp tiêu chuẩn của hàm preg_replace

preg_replace(patterns, replacements, input, limit, count)

Giải thích các tham số

Các tham số Mô tả
patterns Cần phải có. Bao gồm một biểu thức chính quy hoặc mảng các biểu thức chính quy
replacements Cần phải có. Chuỗi mà chúng ta dùng để thay thế cho pattern
input Cần phải có. Chuỗi hoặc mảng chuỗi đầu vào, hay tôi quen gọi là chuỗi lớn đầu vào
limit Tham số này tùy chọn, có cũng được, không có cũng không sao. Mặc định để là -1, nghĩa là không giới hạn. Thiết lập một giới hạn về số lượng thay thế có thể được thực hiện trong mỗi chuỗi
count Cái này cũng là tùy chọn. Sau khi hàm được thực thi, biến này sẽ chứa số lượng bao nhiêu thay thế đã được thực hiện

Giờ chúng ta sẽ đi qua các ví dụ cho dễ hiểu. Ba tham số đầu chúng ta đã biết rồi, chúng ta sẽ thử thao tác với tham số limit.

$str = 'xin chào các bạn. hy vọng các bạn ôn tập đầy đủ. hôm nay chúng ta sẽ làm bài kiểm tra giữa kỳ, chúc các bạn hoàn thành tốt';
$pattern = '/các bạn/';
echo preg_replace($pattern, 'mọi người', $str, 2);

Chuỗi lớn đầu vào $str có 3 cụm từ “các bạn”, nhưng tôi chỉ thay thế 2 từ đầu trong câu lệnh trên, giữ nguyên cụm thứ ba. Kết quả đúng như ý:

xin chào mọi người. hy vọng mọi người ôn tập đầy đủ. hôm nay chúng ta sẽ làm bài kiểm tra giữa kỳ, chúc các bạn hoàn thành tốt

Bây giờ chúng ta sẽ chuyển qua ví dụ về tham số $count. Tham số này có thể rất hữu ích khi chúng ta cần biết chuỗi đầu vào $str có bao nhiêu cụm từ được thay thế. Code mẫu:

$str = 'xin chào các bạn. hy vọng các bạn ôn tập đầy đủ. hôm nay chúng ta sẽ làm bài kiểm tra giữa kỳ, chúc các bạn hoàn thành tốt';
$pattern = '/các bạn/';
echo preg_replace($pattern, 'mọi người', $str, -1, $count)."<br>";
echo $count;

// kết quả đầu ra: xin chào mọi người. hy vọng mọi người ôn tập đầy đủ. hôm nay chúng ta sẽ làm bài kiểm tra giữa kỳ, chúc mọi người hoàn thành tốt
// kết quả của biến $count là: 3