Trong bài này chúng ta tìm hiểu một hàm khá giống với hàm str_replace đó là hàm preg_replace trong PHP. Hàm preg_replace () hoạt động giống như hàm POSIX ereg_replace (), ngoại trừ các biểu thức thông thường có thể được sử dụng trong các tham số đầu vào mẫu và thay thế.
Hàm preg_replace () hoạt động giống như hàm POSIX ereg_replace (), ngoại trừ các biểu thức thông thường có thể được sử dụng trong các tham số đầu vào mẫu và thay thế.
Giới hạn tham số đầu vào tùy chọn chỉ định số lượng kết quả phù hợp sẽ diễn ra.
Nếu thông số tùy chọn $ count được truyền thì biến này sẽ được lấp đầy với số lần thay thế được thực hiện.
Giá trị trả lại:
Sau khi thay thế đã xảy ra, chuỗi đã sửa đổi sẽ được trả lại.
Nếu không tìm thấy kết quả phù hợp, chuỗi sẽ không thay đổi.
preg_replace ( $pattern, $replacement, $subject)
Trong đó:
$partern: là chuỗi Regular Expression
$replacement: là chuỗi replace thành
$subject: là string muốn duyệt và replace
Giá trị trả lại: |
Trả về một chuỗi hoặc một mảng với các giá trị được thay thế |
Phiên bản PHP: |
4+ |
Changelog: |
Các số tham số đã được bổ sung trong PHP 5.0
Trước khi PHP 4.3.3, chức năng này trải qua rắc rối khi sử dụng các mảng như cả hai tìm và thay thế các thông số, khiến trống tìm thấy chỉ số được bỏ qua mà không thúc đẩy con trỏ nội bộ về các thay mảng. Các phiên bản mới hơn sẽ không có vấn đề này.
Kể từ PHP 4.0.5, hầu hết các tham số bây giờ có thể là một mảng |
Ví dụ hàm preg_relace trong PHP
Ví dụ 1: Sử dụng backreferences theo sau là chữ số
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>
Ví dụ trên hiện ra màn hình:
Ví dụ 2: Sử dụng các mảng được lập chỉ mục với preg_replace ()
$string = 'The quick brown fox jumps over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
?>
Ví dụ trên hiện ra màn hình:
Bằng cách sắp xếp các mẫu và thay thế, chúng ta sẽ có được những gì chúng ta muốn.
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
?>
Ví dụ trên sẽ thay đổi:
Ví dụ 3: Thay thế nhiều giá trị
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',
'/^\s*{(\w+)}\s*=/');
$replace = array ('\3/\4/\1\2', '$\1 =');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');
?>
Ví dụ trên sẽ hiển thị:
Ví dụ 4: Dải khoảng trắng
Ví dụ này loại bỏ khoảng trống thừa từ một chuỗi.
$str = 'foo o';
$str = preg_replace('/\s\s+/', ' ', $str);
// This will be 'foo o' now
echo $str;
?>
Ví dụ 5: Sử dụng count tham số
$count = 0;
echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count);
echo $count; //3
?>
Ví dụ trên hiển thị:
Qua 5 ví dụ trên chắc hẳn bạn đã biết các sử dụng hàm preg_replace trong php. Có rất nhiều bài toán khác nhau và ứng dụng khác nhau nên không thể quy ra một công thức chung được, các bạn cố gắng nắm vững các biểu thức Regular Expression để kết hợp. Chúc các bạn thành công!
Một số tài liệu về PHP liên quan khác bạn nên xem: