Regular Expression trong PHP - AGOLA Regular Expression trong PHP - AGOLA

Regular Expression không gì khác ngoài một dãy hoặc một pattern của các ký tự. Chúng cung cấp cơ sở cho tính năng so khớp mẫu.

Sử dụng Regular Expression, bạn có thể tìm kiếm một chuỗi cụ thể bên trong một chuỗi khác, bạn có thể thay thế một chuỗi bởi chuỗi khác và bạn có thể phân chia một chuỗi thành các chuỗi con.

PHP cung cấp nhiều tính năng cụ thể cho hai tập hợp Regular Expression, mỗi tính năng tương ứng với một kiểu Regular Expression cụ thể. Bạn có thể sử dụng bất kỳ kiểu nào theo sở thích của mình.

  • POSIX Regular Expression
  • PERL Style Regular Expression

POSIX Regular Expression trong PHP

Cấu trúc của một POSIX regular expression là không giống với cấu trúc của một biểu thức số học đặc trưng: các phần tử đa dạng (các toán tử) được kết hợp để cấu thành một biểu thức phức tạp hơn.

Regular Expression đơn giản nhất là một Regular Expression mà so khớp với một ký tự đơn, ví dụ q, bên trong một chuỗi như q, quantrimang hoặc quatao.

Dưới đây là phần giải thích cho một số khái niệm đang được sử dụng trong POSIX regular expression. Sau đó, chúng tôi sẽ giới thiệu cho bạn về Regular Expression liên quan tới các hàm.

Các dấu ngoặc vuông

Các dấu ngoặc vuông ([]) có ý nghĩa đặc biệt khi được sử dụng trong ngữ cảnh của các Regular Expression. Chúng được sử dụng để tìm một dãy ký tự.

Expression Miêu tả
[0-9] Khớp với bất kỳ chữ số thập phân nào từ 0 tới 9
[a-z] Khớp với bất kỳ ký tự chữ thường từ a tới z
[A-Z] Khớp với bất kỳ ký tự chữ hoa từ A tới Z
[a-Z] Khớp với bất kỳ ký tự từ chữ thường a tới chữ hoa Z

Các dãy được chỉ ở trên là dãy chung; bạn cũng có thể sử dụng dãy [0-3] để so khớp với bất kỳ chữ số từ 0 tới 3, hoặc dãy [b-v] để so khớp với bất kỳ ký tự chữ thường nào từ b tới v.

Quantifier trong PHP

Tần suất hoặc vị trí của dãy ký tự có ngoặc đơn và ký tự đơn có thể được biểu thị bởi một ký tự đặc biệt. Mỗi ký tự đặc biệt có một ý nghĩa cụ thể. Các +, *, ?, {int. range}, và $ theo sau một dãy ký tự.

Expression Miêu tả
p+ Khớp với bất kỳ chuỗi nào chứa ít nhất một p.
p* Khớp với bất kỳ chuỗi nào chứa ít nhất một p.
p? Khớp với bất kỳ chuỗi nào chứa 0 hoặc nhiều p. Đây là sự thay thế cho việc sử dụng p*.
p{N} Khớp với bất kỳ chuỗi nào chứa một dãy gồm N p.
p{2,3} Khớp với bất kỳ chuỗi nào chứa 2 hoặc 3 p.
p{2, } Khớp với bất kỳ chuỗi nào chứa ít nhất 2 p.
p$ Khớp với bất kỳ chuỗi nào với p ở vị trí cuối của nó.
^p Khớp với bất kỳ chuỗi nào với p ở vị trí đầu của nó.

Ví dụ

Dưới đây là các ví dụ giúp bạn hiểu rõ hơn về các khái niệm so khớp các ký tự:

Expression Miêu tả
[^a-zA-Z] Khớp với bất kỳ chuỗi không chứa bất kỳ ký tự nào từ a tới z và từ A tới Z.
p.p Khớp với bất kỳ chuỗi nào chứa p, được theo sau bởi bất kỳ ký tự nào, trong trường hợp này là p.
^.{2}$ Khớp với bất kỳ chuỗi nào chứa chính xác 2 ký tự.
<b>(.*)</b> Khớp với bất kỳ chuỗi nào được bao bên trong <b> và </b>.
p(hp)* Khớp với bất kỳ chuỗi nào chứa một p được theo sau bởi 0 hoặc nhiều sự thể hiện của dãy php.

Dãy ký tự được định nghĩa trước trong PHP

Giúp bạn tiện lợi hơn trong khi lập trình, một số dãy ký tự được định nghĩa trước, mà còn được biết đến như là các lớp Character, là có sẵn cho bạn. Các lớp Character xác định một dãy toàn bộ các ký tự, ví dụ: bộ chữ cái hoặc một tập hợp integer.

Hàm tích hợp Regexp POSIX trong PHP

Hiện tại, PHP cung cấp 7 hàm để tìm kiếm các chuỗi bằng cách sử dụng POSIX regular expression. Dưới đây là bảng liệt kê các hàm này.

  • Từ phiên bản PHP 5.3.x trở lên các hàm liệt kê trong bảng này đều không được hỗ trợ nữa. Nếu bạn vẫn sử dụng, sẽ gặp lỗi dạng: Deprecated: Function tên_hàm() is deprecated. Ví dụ: Deprecated: Function ereg() is deprecated
  • Nếu đang sử dụng phiên bản PHP 5.3.x trở lên, bạn sử dụng các hàm tích hợp với Regexp PERL trong bảng bên dưới. Cụ thể: preg_match() thay thế cho ereg() và eregi(), preg_replace() thay thế cho ereg_replace() và eregi_replace(), preg_split() thay thế cho split().
Hàm Miêu tả
ereg() Hàm ereg() tìm kiếm một chuỗi được xác định bởi string cho một chuỗi được xác định bởi pattern, trả về true nếu pattern được tìm thấy, nếu không là false.
ereg_replace() Hàm ereg_replace() tìm kiếm chuỗi được xác định bởi pattern và thay thế pattern này với chuỗi thay thế nếu tìm thấy.
eregi() Hàm eregi() tìm một chuỗi được xác định bởi pattern cho một chuỗi được xác định bởi string. Việc tìm kiếm là không phân biệt kiểu chữ.
eregi_replace() Hàm eregi_replace() hoạt đông khá giống hàm ereg_replace(), ngoại trừ việc tìm kiếm pattern trong chuỗi là không phân biệt kiểu chữ.
split() Hàm split() phân chia một chuỗi thành các phần tử đa dạng, giới hạn của mỗi phần tử dựa trên sự xuất hiện của pattern trong chuỗi.
spliti() Hàm spliti() hoạt động khá giống hàm split(), ngoại trừ rằng nó là không phân biệt kiểu chữ.
sql_regcase() Hàm sql_regcase() có thể được xem như là một hàm tiện ích, biến đổi mỗi ký tự trong chuỗi tham số đầu vào vào trong một expression được bao bởi các dấu ngoặc vuông chứa hai ký tự

PERL-style Regular Expression trong PHP

PERL-style regular expression là tương tự như dạng POSIX. Cú pháp POSIX hầu như có thể được sử dụng cho các hàm PERL-style regular expression. Sự thực là, bạn có thể sử dụng bất kỳ quantifier đã được giới thiệu ở trên.

Dưới đây, chúng tôi giải thích một số khái niệm được sử dụng trong PERL regular expression. Sau đó sẽ là các hàm liên quan tới kiểu regular expression này.

Ký tự meta trong PHP

Về cơ bản, một ký tự meta là một ký tự chữ cái được đặt trước bởi một dấu chéo ngược để tạo thành một tổ hợp có ý nghĩa đặc biệt.

Ví dụ, bạn có thể tim kiếm các tổng lượng tiền lớn bởi sử dụng ký tự meta là ‘d’: /([d]+)000/, ở đây d tìm kiếm bất kỳ chuỗi ký tự số nào.

Dưới đây là danh sách các ký tự meta có thể được sử dụng trong PERL-style regular expression.

Ký tự Mô tả
. một ký tự đơn
s một ký tự khoảng trắng (space, tab, newline (dòng mới))
S ký tự không phải là khoảng trắng
d một chữ số (0-9)
D không phải là chữ số
w một ký tự từ (a-z, A-Z, 0-9, _)
W không phải là ký tự từ
[aeiou] so khớp với một ký tự đơn trong tập đã cho
[^aeiou] so khớp với một ký tự đơn bên ngoài tập đã cho
(foo|bar|baz) so khớp với bất kỳ ký tự nào đã cho

Modifier trong PHP

Một số modifier là có sẵn giúp bạn làm việc với Regexp dễ dàng hơn, như phân biệt kiểu chữ, tìm kiếm trong nhiều dòng,…

Modifier Mô tả
i Làm cho hành động so khớp là không phân biệt kiểu chữ (case insensitive).
m Xác định rằng nếu chuỗi có các ký tự newline (dòng mới) hoặc carriage return, thì các toán tử ^ và $ sẽ so khớp với newline (dòng mới) boundary, thay vì so khớp với string boundary.
o Chỉ ước lượng expression một lần.
s Cho phép sử dụng . để so khớp với ký tự newline (dòng mới).
x Cho phép bạn sử dụng khoảng trắng trong expression.
g Tìm kiếm toàn cục (global) cho mọi so khớp.
cg Cho phép tiếp tục tìm kiếm ngay cả sau khi hoạt động tìm kiếm toàn cục thất bại.

Hàm tích hợp với Regexp PERL trong PHP

PHP cung cấp các hàm sau để tìm kiếm các chuỗi sử dụng PERL regular expression.

Hàm Miêu tả
preg_match() Hàm preg_match() tìm kiếm chuỗi cho pattern, trả về true nếu pattern tồn tại, nếu không là false.
preg_match_all() Hàm preg_match_all() so khớp tất cả sự xuất hiện của pattern trong chuỗi.
preg_replace() Hàm preg_replace() hoạt động giống như ereg_replace(), ngoại trừ việc regular expression có thể được sử dụng trong pattern và các tham số đầu vào thay thế.
preg_split() Hàm preg_split() hoạt động giống hàm split(), ngoại trừ việc regular expression được chấp nhận như là các tham số đầu vào cho pattern.
preg_grep() Hàm preg_grep() tìm kiếm tất cả phần tử của input_array, trả về tất cả phần tử mà so khớp với regexp pattern.
preg_ quote() Các ký tự trích dẫn.

Các lý do cần đọc trước khi quyết định liên hệ tôi 

  1. Tham gia group Mua bán Google Ads và Google Shopping :

    https://www.facebook.com/groups/314513929300715

  2. Tham gia group mua bán cho thuê tài khoản BM Agency :

    https://www.facebook.com/groups/1204318359703229

  3. AGOLA chỉ cung cấp dịch vụ không có dịch vụ tư vấn hiểu tới đâu bán tới đó !
  4. AGOLA ngừng cung cấp các gói dịch cho bọn có Slogan " Tuần đổi xe tháng mua nhà " hoặc liên quan !
  5. Các dịch vụ liên quan đến hướng dẫn : diễn ra từ 5-30 phút thông qua teamview hoặc ultral thời gian càng ngắn giá tiền càng cao nên các bạn đọc kỹ trước khi sử dụng
  6. Các sản phẩm dịch vụ không có thương thảo giá và cũng không có hỏi thêm
  7. Không làm việc với mấy thằng giao lưu với lũ suốt ngày dùng VPS remote này remote kia sock này sock kia đổi ngôn ngữ này đổi ngôn ngữ kia add page này sang page kia đổi đá cá kiểu con đà điều ... đây là một lũ ngu thời hiện đại khi bạn muốn vượt rào vòng đầu bạn đã gian lận thì vượt vào đít kèm với đó khả năng dính liên đơi nghi ngờ hành vi bất thường là rất cao nó như kiểu hành vi của bạn có tần xuất giống như hành vi của bọn gian lận khá nhiều nó cho bạn vào động cơ gian lận có nguy cơ nó sẽ pem luôn nhé ... và ti tỷ lý do khác nhé nếu bọn mày mà làm theo tụi nó lên cam được tao cho 20 triệu tiền cafe cà pháo
  8. Không bán vĩnh viễn mọi dịch vụ mua nhầm đòi đổi sang gói dịch vụ khác
  9. Thông tin bảo hành gần như không có nhưng cũng có một số dịch vụ có bảo hành đề nghị đọc kỹ trước khi quyết định mua
  10. Quyết định mua hàng là đồng ý các điều khoản mua bán và điều khoản không được lấy lại tiền và không bồi hoàn
  11. Mua hàng thì xin đọc kỹ điều khoản ở từng mô tả trước khi quyết định nhấc máy liên hệ ở thông tin của từng gói dịch vụ
  12. Mọi giao dịch đều được phải bắt buộc chụp màn hình chuyển khoản gửi vào Zalo
  13. Các đối tượng cố ý chuyển tiền gói này để trục lợi sử dụng gói khác đều được coi là hình vi lừa đảo ! Cố ý ghi nội dung hiểu lầm về chuyển tiền để đôi co đòi sử dụng gói dịch vụ khác cũng vậy !
  14. Tôi là dân khối A nên việc viết sai lỗi chính tả thì kệ mẹ tôi thích thì mua không thích thì đừng soi đi ra chỗ khác do tôi không có soát lại chính tả nên các bạn đọc thay vì thắc mắc thì thông cảm giùm tôi ! miễn sao tôi truyền tải thông tin bạn đọc bạn thấy hiểu được bạn sử dụng không được bạn tìm bên khác
  15. Tôi không làm việc với bọn cử nhân viên là các công ty Agency , truyền thông gọi hỏi dò hỏi luyên thuyên ! Nếu cố tình tôi sẽ dùng CRM Agency cấm lock chạy Ads vĩnh viễn khi nhìn thấy đuôi theo rõi của doanh nghiệp đó mà tôi đã gán.
  16. Tôi không làm việc với bọn nào thì tôi chạy tiền tỷ tôi tiêu tiền tỷ nhưng chạy demo trước nếu ngon thì vít lớn nhưng sau 3 ngày thuê thấy đéo thấy như cam kết về ngân sách
  17. Tôi không hợp tác ăn chia hay kiểu Win Win đôi bên có lợi
  18. Tất cả những câu hỏi khi gọi điện khiến tôi nghĩ rằng bạn chưa đọc kỹ thông tin trên website sẽ được tôi từ chối vô điều kiện
  19. Không làm việc các công ty có các nhân vật nổi tiếng trên các đài báo truyền hình bởi vậy bớt quảng cáo
  20. Các đối tượng cố tình lên mạng tìm kiểm thông tin tôi và không có trao đổi được tôi dùng Zalo : O9O9.456.866 gửi STK thông tin thanh toán của tôi qua zalo đó mà vẫn chuyển tiền vào tài khoản của tôi được coi là hình vi lừa đảo cố tình trọc phá và lợi dụng sử dụng lừa đảo để mong muốn sử dụng dịch vụ của tôi nhưng vì cấm nên phải làm vậy
  21. Kiến thức của đại đa số dân trên mạng không sai mà chỉ đúng với bọn gà mờ mà thôi kiểu như bạn học lớp 1 cô giáo nói 1 không trừ được cho 2 lên cấp 2 cô giáo nói 1 trừ được cho 2 ! Lúc đó cô giáo cấp 1 hay thầy giáo cấp 2 không nói ai đúng ai sai được mà tại thời điểm đó bạn thấy nó đúng còn khi đi sâu vào nó đéo đúng 😀 ! Cũng như việc tôi bán dịch vụ cho dân trong nghề việc tôi có bắt mấy thằng cấp 1 nuốt kiến thức chuyên sâu của cấp 2 là không được bởi vậy dân nào hiểu sẽ liên hệ mua chứ đừng kiểu lơ mở hỏi cho vui cửa vui nhà
  22. Không làm việc với bọn hở miệng ra là em từng có BM2500 với BM1000
  23. Không lamg việc với bọn hở mồm ra là fake mà đến cái via kiểm tra như thế nào là 1 cái via Việt hay via us... cũng đéo biết kiểm tra thế mà cứ đi nghe mấy thằng trên mạng Fake Ip , Fake đổi ngôn ngữ này ngôn ngữ kia ... tùm lum tà la login đổi via các kiểu con đa điểu rồi nghe thì vui tai mà làm cũng được không đéo có biết lý do chỉ có lý do vớ vẩn - Không tin tao đố bọn mày hỏi thử nó 1 câu via Việt là như thế nào đố thằng đó biết đó xàm xí - hay via việt là thông tin Việt Nam hahaha !
  24. Không làm việc với bọn nào thì đổi mạng 4g kết nối này kết nối kia lên cam có con cặc ấy mấy cái công nghệ cổ lỗ sĩ này bọn code tool click quảng cáo nó sài gần 10 năm nay rồi lòe dân gà hoài dần dần ko hiệu quả bọn nó ko dùng rồi lũ đó biến mất khỏi thị trường bán tài khoản
  25. Quyết tâm cấm log mọi thằng liên quan tới BM2500 vĩnh viễn hạn chế tài khoản quảng cáo liên đới từ 6 tới 2 năm kể cả cho kháng XMDT theo tút trên mạng
  26. Tiếp tục sắp tới sẽ thanh lọc toàn bộ Invoice
  27. Bọn mày nghĩ xem mẹ chúng nó giỏi vậy nhận hàng về mà chạy quảng cáo đi giàu hơn ko sao phải đi kiếm tiền dạy học ba láp ba xàm đó xem thấy quảng cáo của tụi đó trước đây chạy quảng cáo tràn lan quảng bá khóa học như đúng rồi giờ chạy đi ba láp ba xàm

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Call Now Button
X