Cú pháp hàm preg_replace()

Hàm preg_replace sử dụng RegExp (xem cách viết biểu thức chính quy RegExp) để tìm kiếm và thay thế chuỗi.

preg_replace($pattern, $replacement,$subject)

Hàm này tìm trong $subject các chuỗi con phù hợp với mẫu $pattern là một biểu thức RegExp, thay thế chuỗi tìm thấy bởi $replacement

  • $pattern : Biểu thức RegExp để tìm kiếm có thể là một chuỗi hoặc một mảng.
  • $subject : Chuỗi nhập vào để tìm kiếm
  • $replacement : Giá trị thay thế, có thể là chuỗi hoặc mảng. Nếu $pattern là mảng $replacement là chuỗi thì mọi kết quả tìm kiểm theo $pattern được thay thể bởi $replacement. Nếu cả $pattern, $replacement là mảng thì nó thay thế theo phần tử tương ứng.

$replacement đặc biệt có thể được biểu diễn một cách đặc biệt, nó có thể chứa các tham chiếu dùng để chèn nội dung, tham chiếu có dạng $n với n = 0 - 99. Với $0 tương ứng với sự phù hợp với toàn bộ $pattern, $1, $2 ... tương ứng với mẫu con theo thứ tự trong $pattern (Xem ví dụ 2)

Hàm preg_replace trả về chuỗi hoặc mảng các chuỗi để tìm kiếm và thay thế.

Ví dụ hàm preg_replace()

Ví dụ 1 về preg_replace

Tìm các cụm số thay thế bằng 2000


<?php
$str = "Vi du ve ham preg_replace 21321 878";

$str = preg_replace("/[0-9]+/", "2000", $str);
print $str;
?>

//OUT:Vi du ve ham preg_replace 2000 2000 Mục lục bài viết 

Ví dụ 2 $replacement đặc biệt

Ví dụ sau, cho chuỗi có nội dung: 'Tháng ... Năm ....' đảo thành 'Năm ..., Tháng ...'


<?php
    $string = 'Tháng 12 Năm 2017';
    $pattern = '/(\w+) (\d+) (\w+) (\d+)/iu';
    $replacement = '$3 $4, $1 $2';
    echo preg_replace($pattern, $replacement, $string);
?>

//OUT:Năm 2017, Tháng 12 Mục lục bài viết 

Với ví dụ trên về $pattern cờ ui cho biết không phân biệt chữ hoa, chữ thường và dùng chuỗi Unicode. Với mẫu này trong nó có các $pattern con là (\w+) tương ứng với $1, (\d+) tương ứng với $2 ...Và $replacement sử dụng các chỉ số này để tạo chuỗi thay thế.

Ví dụ 3 dùng preg_replace với mảng xử lý BBCODE

Ví dụ sau sẽ chuyển các mã bbcode: b, i, u, img, url thành mã HTML thông thường.


<?
function bbcode2Html($str) {
    $search = array(
        '/\[b\](.*?)\[\/b\]/isu',
        '/\[i\](.*?)\[\/i\]/isu',
        '/\[u\](.*?)\[\/u\]/isu',
        '/\[img\](.*?)\[\/img\]/isu',
        '/\[url\](.*?)\[\/url\]/isu',
        '/\[url\=(.*?)\](.*?)\[\/url\]/isu'
    );

    $replace = array(
        '<strong>$1</strong>',
        '<em>$1</em>',
        '<u>$1</u>',
        '<img src="$1" />',
        '<a href="$1">$1</a>',
        '<a href="$1">$2</a>'
    );

    $str = preg_replace ($search, $replace, $str);
    return $str;
}
//Test
$bbcdoe = '[url=https://xuanthulab.net][b]xuanthulab.net[/b][/url]';
echo bbcode2Html($bbcdoe);
//OUT HTML: <a href="https://xuanthulab.net"><strong>xuanthulab.net</strong></a>

Đăng ký theo dõi ủng hộ kênh