PHP preg_replace_callback_array

`preg_replace_callback_array` là một hàm trong PHP được sử dụng để thực hiện thay thế chuỗi với một số hàm callback thích hợp. Hàm này cho phép bạn định nghĩa nhiều mẫu regex và hàm xử lý tương ứng cho từng mẫu đó, từ đó thực hiện thay thế chúng trong chuỗi đầu vào. ### Cú pháp ```php array preg_replace_callback_array(array $patterns, string $subject[, int $limit = -1]) ; ``` - **$patterns**: Một mảng kết hợp, trong đó khóa là các biểu thức chính quy và giá trị là hàm callback sẽ được gọi khi phù hợp với mẫu đó. - **$subject**: Chuỗi đầu vào mà bạn muốn thực hiện thay thế. - **$limit**: (Tuỳ chọn) Số lần tối đa mà các mẫu được áp dụng. Mặc định là không giới hạn (-1). ### Cách sử dụng Dưới đây là một ví dụ đơn giản về cách sử dụng `preg_replace_callback_array` để thay thế các số trong chuỗi bằng một từ tương ứng: ```php 'One', '2' => 'Two', '3' => 'Three', '4' => 'Four', '5' => 'Five' ]; return $numberMapping[$matches[0]]; } // Mẫu regex và các hàm callback $patterns = [ '/\b(1|2|3|4|5)\b/' => 'replaceNumbers' ]; // Chuỗi đầu vào $subject = "I have 1 apple, 2 bananas, 3 oranges."; // Thực hiện thay thế $result = preg_replace_callback_array($patterns, $subject); // In kết quả echo $result; // "I have One apple, Two bananas, Three oranges." ?> ``` ### Giải thích 1. **Định nghĩa hàm callback**: Trong ví dụ trên, hàm `replaceNumbers` được định nghĩa để thay thế các số bằng từ tương ứng. 2. **Mẫu regex**: Mảng `$patterns` chứa một mẫu regex tìm kiếm các số từ 1 đến 5. 3. **Chuỗi đầu vào**: Biến `$subject` chứa chuỗi bạn muốn thay thế. 4. **Thực hiện thay thế**: Gọi `preg_replace_callback_array`, truyền vào mảng mẫu regex và chuỗi đầu vào. 5. **Kết quả**: Biến `$result` chứa chuỗi đã được thay thế. ### Lưu ý Khi sử dụng `preg_replace_callback_array`, bạn có thể định nghĩa nhiều mẫu và hàm callback khác nhau, cho phép thực hiện các phép thay thế phức tạp và linh hoạt hơn trong một lần gọi hàm. Điều này rất hữu ích trong các tình huống bạn cần xử lý nhiều loại dữ liệu khác nhau trong một chuỗi.