/ / Php nâng cao / Comment (0)

Regular Expressions trong php

Biểu thức chính quy(Regular Expression) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định(theo wikipedia).Trong bài này mình sẽ chỉ giới thiệu về Regular Expression ở mức độ căn bản để các bạn có thể hình dung phần nào về nó.

Regular Expressions là gì?

+ Biểu thức chính quy.

+ Hiểu nôm na là 1 chuỗi có quy tắc để mô tả những chuỗi(string) khác

+ Làm việc với string thường rất vất vả và đòi hỏi độ chính xác cao. với Regular Expression trong PHP, công việc này được đơn giản đi rất nhiều.

+ PHP cũng hỗ trợ một hàm để thực hiện biểu thức, đó là:

preg_match($pattern , $string).
  • $pattern: Chuỗi cần tìm
  • $string: Chuỗi gốc

– Ngoài ra PHP còn hỗ trợ chúng ta hàm để thay thế 1 chuỗi thành 1 chuỗi khác thông qua hàm preg_replace

preg_replace ( $pattern, $replacement, $subject)     
  • $partern: là chuỗi Regular Expression
  • $replacement: là chuỗi replace thành
  • $subject: là string muốn duyệt và replace

– Ví dụ:

  $partern = '/php/'; 
  $subject = ‘php co ban, php frameword'; 
  $replacement = ‘code';
  echo preg_replace($partern, $replacement, $subject); 
  //kết quả: code co ban, code frameword   

Với ví dụ trên chúng ta đang thực hiện việc tìm kiếm tât cả các chuỗi “php” có trong chuỗi $subject và thay thấy chuỗi đó thành chuỗi “code”;

Các ký tự đặc biệt

– Regular Expression chia ra làm 2 loại ký tự:

+ Ký tự thường bao gồm các ký tự trong bảng chữ  cái: a,b,c,d,.. và các chuỗi thông thường được ghép từ các ký tự đó.

+ Ký tự đặc biệt:

  •        ^ : Trả về chuỗi kết quả phù hợp với vị trí đầu của chuỗi gốc.
  •        $ : Trả về chuỗi kết quả phù hợp với vị trí cuối của chuỗi gốc.
  •        \  : Ký tự Escape.
  •       + : Lặp lại 1 hay nhiều lần.

– Ví dụ:
+ biểu thức chính quy cho một string có chuỗi “php” ở trong đó.

<?php 
      $pattern = '/php/'; 
      $string = ‘php cơ bản'; 
      if(preg_match($pattern , $string)) {  
        echo ‘Có tồn tại'; 
      } 
      // trả về Có tồn tại
?>   

+ biểu thức chính quy cho một string bắt đầu bởi chuỗi “php”

<?php 
      $pattern = '/^php/';  
      $string = ‘php cơ bản';
      if(preg_match($pattern , $string)) {     
          echo ‘Có tồn tại';
       } else {     
          echo ‘Không tồn tại'; 
      } 
      // trả về Có tồn tại
?>   

+ biểu thức chính quy cho một string kết thúc bằng chuỗi “php”

<?php 
      $pattern = '/php$/';  
      $string = ‘php cơ bản';
      if(preg_match($pattern , $string)) {     
          echo ‘Có tồn tại';
       } else {     
          echo ‘Không tồn tại'; 
      } 
      // trả về Không tồn tại
?>   

Ký hiệu: “*”, “+”, “?”

– biểu thức chính quy cho một string bắt đầu bởi a, và kết thúc là 0 hoặc nhiều b(ví dụ: a, ab, abb, abbb, …);

$pattern= '/^ab*$/' ;

– biểu thức chính quy cho một string bắt đầu bởi a, và kết thúc là 1 hoặc nhiều b (ví dụ: ab, abb, abbb..);

$pattern = '/^ab+$/';

– biểu thức chính quy cho một string bắt đầu bởi a, và kết thúc là b hoặc là không (ví dụ: ab hoặc a).

$pattern = '/^ab?$/'; 

Sử dụng: {}

+ biểu thức chính quy cho một string bắt đầu bởi a, và kết thúc là 2 chữ b (ví dụ: abb);

$pattern = '/^ab{2}$/';  

+ biểu thức chính quy cho một string bắt đầu bởi a, và kết thúc là ít nhất 2 chũ b (ví dụ: abb, abbb, abbbb, …);

$pattern = '/^ab{2,}$/'; 

+ biểu thức chính quy cho một string bắt đầu bởi a, và kết thúc là ít nhất 2 chũ b và nhiều nhất là 5 chữ b (ví dụ: abb, abbb, abbbb, abbbbb);

$pattern = '/^ab{2,5}$/';  

Sử dụng : () và |

+ biểu thức chính quy cho một string bắt đầu bởi a, và kết thúc là 0 hoặc nhiều ‘bc’ (ví dụ abc, abcbc, abcbcbcbc, …)

$pattern = '/^a(bc)*$/'; 

+ biểu thức chính quy cho một string bắt đầu bởi a, và kết thúc là 0 hoặc nhiều ‘b’ hoặc nhiều ‘c’ hoặc ‘b’ ‘c’ lẫn lộn (ví dụ: abc, abbcccccccccc, abccccbbbcbc, …)

$pattern = '/^a(b|c)*$/'; 

Sử dụng: ‘-‘

  • [0-9] : Một chữ số
  • [a-zA-Z]: một ký tự A->Z, a->z
  • [a-d] : ~ (a|b|c|d)
  • [^a-zA-Z]: một ký tự không phải là A->Z, a->z
  • [^0-9]: một ký tự không phải là số


04/09/2014
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL