DANH MỤC: PHP Regular Expression

Bài 5: Hàm preg_replace trong PHP


Bài trước mình đã giới thiệu với mọi người về hàm preg_quote() - trích dẫn các ký tự đặc việt trong Regular Expression. Bài này chúng ta sẽ tiếp tục tìm hiểu về một hàm nữa trong gói PCRE  function trong PHP, đó là hàm preg_replace().

1, Hàm preg_replace().

-Hàm preg_replace() trong PHP có tác dụng gần giống như hàm str_replace(), nó đều có tác dụng là tìm kiếm và thay thế.

Cú Pháp:

preg_replace($pattern, $replacement, $subject, $limit, $count);

Trong đó:

  • $pattern là chuỗi regex mà các bạn muốn tìm kiếm.
  • $replacement là chuỗi thay thế cho chuỗi regex tìm được.
  • $subject là chuỗi mà các bạn cần tìm kiếm và thay thế.
  • $limit là giới hạn số lần thay thế chuỗi mặc định là $limit = -1 là không giới hạn (tham số này có thể bỏ trống).
  • $count là số lần thay thế chuỗi khi sử dụng hàm, được sử dụng dưới dạng tham chiếu.(tham số này có thể bỏ trống).

2, Các ví dụ.

Thay thế chuỗi đơn giản

VD1: Tìm kiếm từ 'code' và thay thế chuỗi tìm được thành 'toidicode.com'.

<?php 
$pattern = '/code/';
$replacement = 'https://toidicode.com';
$subject = 'code hoc lap trinh online - code';
echo preg_replace($pattern, $replacement, $subject);

Kết quả:

https://toidicode.com hoc lap trinh online - https://toidicode.com

VD2: Tìm kiếm và thay đổi vị trí từng chuỗi một theo pattern.

<?php 
$pattern = '/([0-9]{0,2})-([0-9]{2})-([0-9]{4})-(.+)/';
$replacement = '$4 ngày $1/$2/$3';
$subject = '27-05-2017-Thứ bảy';
echo preg_replace($pattern, $replacement, $subject);

Kết quả:

Thứ bảy ngày 27/05/2017

-Như các bạn đã nhìn thấy thì ở ví dụ này mỗi một nhóm pattern được coi là một biến, biến này sẽ bắt đầu từ 1 cho đến hết và được tăng dần từ trái qua phải. Trong trường hợp trên thì

  • ([0-9]{2}) thứ nhất là $1.
  • ([0-9]{2}) thứ 2 là $2.
  • ([0-9]{4})$3.
  • (.+)$4.

Thay thế chuỗi giới hạn số lần thay thế

VD3: Tìm kiếm và thay thế 'facebook' thành 'google'. Lưu ý số lần thay thế không được vượt quá 3 lần.

<?php 
$pattern = '/facebook/';
$replacement = 'google';
$subject = 'facebook facebook facebook facebook';
echo preg_replace($pattern, $replacement, $subject,3);

Kết quả:

google google google facebook

-Như các bạn đã thấy thì nó chỉ thay thế đến đúng 3 lần là dừng lại.

Thay thế và đếm số lần đã được thay thế

VD4: Cũng với ví dụ 3 nhưng lần này chúng ta sẽ không để giới hạn số lần thay thế nữa và đồng thời đếm xem sau khi chạy xong hàm thì nó đã thay thế được bao nhiêu lần.

<?php 
$pattern = '/facebook/';
$replacement = 'google';
$subject = 'facebook facebook facebook facebook';
echo 'Chuỗi gốc: ' . $subject . '<br/>';
echo 'Chuỗi sau khi thay thế : ' . preg_replace($pattern, $replacement, $subject,-1, $count) . '<br/>';
echo 'Số lần thay thế: ' . $count;

Kết quả:

Chuỗi gốc: facebook facebook facebook facebook
Chuỗi sau khi thay thế : google google google google
Số lần thay thế: 4

3, Lời kết.

-Như vậy mình đã giới thiệu xong đến mọi người về hàm preg_replace() trong PHP rồi. Phần sau chúng ta sẽ tìm hiểu về hàm preg_match_all() trong PHP.

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

Biển học vô biên, quay đầu là dại!

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia