PHP preg_match(): Biểu thức chính quy (Regex)

Biểu thức chính quy trong PHP là gì?

Biểu thức chính quy PHP còn được gọi là regex là thuật toán khớp mẫu mạnh mẽ có thể được thực hiện trong một biểu thức duy nhất. Biểu thức chính quy sử dụng các toán tử số học như (+,-,^) để tạo các biểu thức phức tạp. Chúng có thể giúp bạn hoàn thành các tác vụ như xác thực địa chỉ email, địa chỉ IP, v.v.

Tại sao sử dụng biểu thức chính quy

  • Biểu thức chính quy của PHP đơn giản hóa việc xác định các mẫu trong dữ liệu chuỗi bằng cách gọi một hàm duy nhất. Điều này giúp chúng tôi tiết kiệm thời gian mã hóa.
  • Khi xác thực thông tin đầu vào của người dùng như địa chỉ email, tên miền, số điện thoại, địa chỉ IP,
  • Làm nổi bật từ khóa trong kết quả tìm kiếm
  • Khi tạo mẫu HTML tùy chỉnh. Regex trong PHP có thể được sử dụng để xác định các thẻ mẫu và thay thế chúng bằng dữ liệu thực tế.

Các hàm biểu thức chính quy tích hợp trong PHP

PHP đã xây dựng sẵn các hàm cho phép chúng ta làm việc với các hàm thông thường mà chúng ta sẽ tìm hiểu trong hướng dẫn Biểu thức chính quy PHP này. Chúng ta hãy xem các hàm biểu thức chính quy thường được sử dụng trong PHP.

  • preg_match() trong PHP - hàm này được sử dụng để thực hiện khớp mẫu trong PHP trên một chuỗi. Nó trả về true nếu tìm thấy kết quả khớp và trả về sai nếu không tìm thấy kết quả khớp.
  • preg_split() trong PHP - hàm này được sử dụng để thực hiện khớp mẫu trên một chuỗi và sau đó chia kết quả thành một mảng số
  • preg_replace() trong PHP – hàm này được sử dụng để thực hiện khớp mẫu trên một chuỗi và sau đó thay thế khớp bằng văn bản đã chỉ định.

Dưới đây là cú pháp cho một hàm biểu thức chính quy, chẳng hạn như PHP preg_match(), PHP preg_split() hoặc PHP preg_replace().

<?php
function_name('/pattern/',subject);
?>

ĐÂY,

  • “function_name(…)” là PHP preg_match(), PHP preg_split() hoặc PHP preg_replace().
  • “/…/” Dấu gạch chéo lên biểu thị phần đầu và phần cuối của hàm kiểm tra biểu thức chính quy PHP của chúng tôi
  • “'/pattern/'” là mẫu mà chúng ta cần khớp
  • “chủ đề” là chuỗi văn bản được so khớp với

Bây giờ chúng ta hãy xem các ví dụ thực tế triển khai các hàm biểu thức chính quy PHP ở trên.

Preg_match() trong PHP

Ví dụ đầu tiên sử dụng hàm preg_match() trong PHP để thực hiện khớp mẫu đơn giản cho từ guru trong một URL nhất định.

Mã bên dưới hiển thị cách triển khai hàm kiểm tra preg_match() cho ví dụ trên.

<?php
$my_url = "www.guru99.com";
if (preg_match("/guru/", $my_url))
{
	echo "the url $my_url contains guru";
}
else
{
	echo "the url $my_url does not contain guru";
}
?>

Duyệt đến URL http://localhost/phptuts/preg_match_simple.php

Các hàm biểu thức chính quy tích hợp sẵn

Hãy kiểm tra phần mã chịu trách nhiệm cho kết quả đầu ra của chúng ta “preg_match('/guru/', $my_url)” ĐÂY,

  • “preg_match(…)” là hàm biểu thức chính quy PHP
  • “'/guru/'” là mẫu biểu thức chính quy cần khớp
  • “$my_url” là biến chứa văn bản được so khớp.

Sơ đồ dưới đây tóm tắt các điểm trên

PHP Preg_split()

Bây giờ chúng ta hãy xem một ví dụ khác sử dụng hàm preg_split() trong PHP.

Chúng ta sẽ lấy một cụm từ chuỗi và chia nó thành một mảng; mẫu cần khớp là một khoảng trắng.

Chuỗi văn bản được sử dụng trong ví dụ này là “I Love Regular Expressions”.

Đoạn mã dưới đây minh họa việc thực hiện ví dụ trên.

<?php

$my_text="I Love Regular Expressions";

$my_array  = preg_split("/ /", $my_text);

print_r($my_array );

?>

Duyệt đến URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Bây giờ chúng ta hãy nhìn vào preg_replace() trong Hàm PHP thực hiện khớp mẫu và sau đó thay thế mẫu đó bằng một mẫu khác.

Đoạn mã dưới đây tìm kiếm từ guru trong một chuỗi.

Nó thay thế từ guru bằng từ guru được bao quanh bởi mã css làm nổi bật màu nền.

<?php

$text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com";

$text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text);

echo $text;

?>

Giả sử bạn đã lưu file preg_replace.php, browser vào URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Siêu ký tự biểu thức chính quy

Các ví dụ trên sử dụng các mẫu rất cơ bản; siêu ký tự chỉ cho phép chúng ta thực hiện các phép so khớp mẫu phức tạp hơn như kiểm tra tính hợp lệ của địa chỉ email. Bây giờ chúng ta hãy xem các siêu ký tự thường dùng.

siêu ký tự Mô tả Ví dụ
. Khớp với bất kỳ ký tự đơn nào ngoại trừ một dòng mới /./ khớp với bất cứ thứ gì có một ký tự
^ Khớp phần đầu hoặc chuỗi/loại trừ các ký tự /^PH/ khớp với bất kỳ chuỗi nào bắt đầu bằng PH
$ Khớp mẫu ở cuối chuỗi /com$/ khớp với guru99.com,yahoo.com, v.v.
* Khớp với bất kỳ số 0 (XNUMX) hoặc nhiều ký tự nào /com*/ khớp với máy tính, giao tiếp, v.v.
+ Yêu cầu (các) ký tự trước xuất hiện ít nhất một lần /yah+oo/ khớp với yahoo
\ Được sử dụng để thoát khỏi các ký tự meta /yahoo+\.com/ coi dấu chấm là giá trị bằng chữ
[...] Lớp nhân vật /[abc]/ khớp với abc
AZ Khớp với chữ cái viết thường /az/ phù hợp với mát mẻ, vui vẻ, v.v.
AZ Khớp với chữ in hoa /AZ/ khớp với CÁI GÌ, THẾ NÀO, TẠI SAO, v.v.
0-9 Khớp với bất kỳ số nào từ 0 đến 9 /0-4/ khớp 0,1,2,3,4

Danh sách trên chỉ cung cấp các siêu ký tự được sử dụng phổ biến nhất trong biểu thức chính quy.

Bây giờ chúng ta hãy xem một ví dụ khá phức tạp để kiểm tra tính hợp lệ của một địa chỉ email.

<?php
$my_email = "name@company.com";
if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) {
echo "$my_email is a valid email address";
}
else
{
  echo "$my_email is NOT a valid email address";
}
?>

Giải thích mẫu “[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] ”

ĐÂY,

  • “'/…/'” bắt đầu và kết thúc biểu thức chính quy
  • “^[a-zA-Z0-9._-]” khớp với mọi chữ cái viết thường hoặc in hoa, số từ 0 đến 9 và dấu chấm, dấu gạch dưới hoặc dấu gạch ngang.
  • “+@[a-zA-Z0-9-]” khớp với ký hiệu @ theo sau là chữ cái viết thường hoặc viết hoa, số từ 0 đến 9 hoặc dấu gạch ngang.
  • “+\.[a-zA-Z.]{2,5}$/” thoát khỏi dấu chấm bằng dấu gạch chéo ngược, sau đó khớp với bất kỳ chữ cái viết thường hoặc viết hoa nào có độ dài ký tự từ 2 đến 5 ở cuối chuỗi.

Duyệt đến URL http://localhost/phptuts/preg_match.php

[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]

Như bạn có thể thấy từ ví dụ phân tích ở trên, siêu ký tự rất mạnh khi nói đến các mẫu khớp.

Tổng kết

  • Biểu thức chính quy hoặc Regex trong PHP là một thuật toán khớp mẫu
  • Biểu thức chính quy rất hữu ích khi thực hiện kiểm tra xác thực, tạo hệ thống mẫu HTML nhận dạng thẻ, v.v.
  • PHP đã xây dựng sẵn các hàm cụ thể là PHP preg_match(), PHP preg_split() và PHP preg_replace() hỗ trợ các biểu thức chính quy.
  • Siêu ký tự cho phép chúng ta tạo ra các mẫu phức tạp