SlideShare a Scribd company logo
1 of 39
Download to read offline
Bài 3
Một số kỹ thuật lập trình PHP nâng cao
Cách tạo một biểu thức chính quy và xử lý bằng
hàm preg_match
Cách sử dụng biểu thức chính quy nhiều dòng,
toàn cục
Cách sử dụng hàm preg_replace và preg_split
để làm việc với biểu thức chính quy
Cơ chế sử dụng biểu thức chính quy trong xác
thực dữ liệu
Cơ chế tạo, ném và xử lý ngoại lệ
Mục tiêu
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 2
Tạo và sử dụng biểu thức chính quy
So khớp các ký tự
Sử dụng lớp ký tự
Tạo chuỗi mẫu (pattern)
Sử dụng xác nhận trước (look-ahead assertion)
Sử dụng biểu thức chính quy nhiều dòng
Sử dụng biểu thức chính quy toàn cục
Thay thế biểu thức chính quy bằng một xâu
Làm việc với biểu thức chính quy
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 3
Hàm so khớp biểu thức chính quy:
Cách tạo một biểu thức chính quy:
Hai xâu để kiểm tra:
Cách tìm chuỗi:
Biểu thức chính quy
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 4
preg_match($pattern, $string)
$pattern = '/Harris/';
$author = 'Ray Harris';
$editor = 'Joel Murach';
$author_match = preg_match($pattern, $author);
$editor_match = preg_match($pattern, $editor);
Kiểm tra lỗi
trong biểu thức chính quy
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 5
if ($author_match === false) {
echo 'Error testing author name';
} else if ($author_match === 0) {
echo 'Author name does not contain Harris';
} else {
echo 'Author name contains Harris';
}
Một biểu thức chính quy không phân biệt chữ
hoa hay chữ thường:
Cách sử dụng:
Biểu thức chính quy
không phân biệt chữ hoa hay thường
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 6
$pattern = '/murach/i';
$editor = 'Joel Murach';
$editor_match = preg_match($pattern, $editor);
Khái niệm biểu thức chính quy (regular
expression)
Khái niệm chuỗi mẫu (pattern)
Chuỗi mẫu cho các ký tự đặc biệt:
Chuỗi mẫu (pattern)
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 7
Chuỗi mẫu Ý nghĩa
 Ký tự 
/ Ký tự /
t Tab
n Dòng (line) mới
r Quay lại
f Form feed
xhh Ký tự Latin-1 với giá trị là hai chữ số hệ
thập phân
So khớp các ký tự đặc biệt
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 8
$string = "© 2010 Mike's Music.  All rights reserved
(5/2010).";
preg_match('/xA9/', $string);
//So khớp © và trả về 1
preg_match('///', $string);
//Trà về false và đưa ra cảnh báo
preg_match('//', $string);
//So khớp / và trả về 1
preg_match('//', $string);
//So khớp  và trả về 1
Chuỗi mẫu Ý nghĩa
. Bất kỳ ký tự đơn nào ngoại trừ ký tự dòng mới
w Bất kỳ chữ cái, số và dấu _
W Bất kỳ ký tự nào ngoại trừ chữ cái, số và dấu _
d Bất kỳ chữ số nào
D Bất kỳ ký tự nào ngoại trừ chữ số
s Bất kỳ khoảng trắng nào (tab, dấu cách, dòng mới, …)
S Bất kỳ ký tự nào ngoại trừ khoảng trắng
Chuỗi mẫu cho các loại ký tự
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 9
Các loại ký tự so khớp
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 10
$string = 'The product code is MBT-3461';
preg_match('/MB.', $string);
//So khớp MBT và trả về 1
preg_match('/MBd', $string);
//Không so khớp gì và trả về 0
preg_match('/MBT-d', $string);
//So khớp MBT-3 và trả về 1
Sử dụng lớp ký tự
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 11
$string = 'The product code is MBT-3461';
preg_match('/MB[TF]', $string);
//So khớp MBT và trả về 1
preg_match('/[.]/', $string);
//So khớp . và trả về 1
preg_match('/[13579]/', $string);
//So khớp 3 và trả về 1
Sử dụng
các siêu ký tự (metacharacter)
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 12
preg_match('/MB[^TF]', $string);
//Không so khớp gì và trả về 0
preg_match('/MBT[^^]/', $string);
//So khớp MBT- và trả về 1
preg_match('/MBT-[1-5]/', $string);
//So khớp MBT-3 và trả về 1
preg_match('/MBT[_*-]/',$string);
//So khớp MBT- và trả về 1
Sử dụng dấu ngoặc
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 13
preg_match('/MB[[:punct:]]', $string);
//So khớp MBT- và trả về 1
preg_match('/MBT[[:digit:]]/', $string);
//Không so khớp gì và trả về 0
preg_match('/MB[[:upper:]]/', $string);
//So khớp MBT và trả về 1
Chuỗi mẫu Ý nghĩa
^ Bắt đầu xâu
$ Kết thúc xâu
b Bắt đầu hoặc kết thúc một từ (không nằm trong ngoặc)
B Vị trí không phải là bắt đầu hoặc kết thúc một từ
Chuỗi mẫu cho vị trí xâu
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 14
So khớp vị trí xâu
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 15
$string = 'Ray Harris';
preg_match('/^Ray/', $string);
//Trả về 1
preg_match('/Harris$/', $string);
//Trả về 1
preg_match('/^Harris/', $string);
//Trả về 0
$editor = 'Anne Boehm';
preg_match('/Ann/',$editor);
//Trả về 1
preg_match('/Annb/', $editor);
//Trả về 0
So khớp chuỗi mẫu con
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 16
$name = 'Rob Rebertson';
preg_match('/^(Rob)|(Bob)b/', $name);
//Trả về 1
preg_match('/^(www) 1/', $name);
//Trả về 1
So khớp các chuỗi mẫu lặp lại
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 17
$phone = '559-555-6627';
preg_match('/^d{3}-d{3}-d{4}$/', $phone);
//Trả về 1
$fax = '(559) 555-6635';
preg_match('/^(d{3}) ?d{3}-d{4}$/', $fax);
//Trả về 1
$phone_pattern = '^(d{3}-)|((d{3}) ?)d{3}-d{4}$';
preg_match($phone_pattern, $phone);
//Trả về 1
preg_match($phone_pattern, $fax);
//Trả về 1
Các xác nhận trước:
Ví dụ:
Xác nhận trước
(Look-ahead assertion)
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 18
(?=[[:digit:]]
//Ký tự kế tiếp trong chuỗi mẫu phải là chữ số
(?=.*[[:digit:]])
//Chuỗi mẫu phải chứa ít nhất một chữ số
$pattern = '/^(?=.*[[:digit:]])[[:alnum:]]{6}$';
preg_match($pattern, 'Harris');
//Xác nhận thất bại và trả về 0
preg_match($pattern, 'Harri5');
//Trả về 1
Xác nhận trước đảo ngược
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 19
$pattern = '/^(?!3[2-9])[0-3][[:digit:]]$/';
preg_match($pattern, '32');
//Xác nhận thất bại và trả về 0
preg_match($pattern, '31');
//Trả về 1
Chuỗi mẫu:
Các thành phần:
Chuỗi mẫu kiểm tra
độ phức tạp của mật khẩu
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 20
$pw_pattern =
'/^(?=.*[[:digit:]])(?=.*[[:punct:]])[[:print:]]{6,}$/'
^ //Bắt đầu xâu
(?=.*[[:digit:]]) //Ít nhất một chữ số
(?=.*[[:punct:]]) //Ít nhất một dấu câu
[[:print:]]{6,} //Ít nhất sáu ký tự in được
$ //Kết thúc xâu
Sử dụng chuỗi mẫu:
Chuỗi mẫu kiểm tra
độ phức tạp của mật khẩu
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 21
$password1 = 'sup3rsecret';
$password2 = 'sup3rse(ret';
preg_match($pw_pattern, $password1);
//Trả về 0
preg_match($pw_pattern, $password2);
//Trả về 1
Biểu thức chính quy nhiều dòng
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 22
$string = "Ray HarrisnAuthor";
$pattern1 = '/Harris$/';
preg_match($pattern1, $string);
//Không so khớp Harris và trả về 0
$pattern2 = '/Harris$/m';
preg_match($pattern2, $string);
//So khớp Harris và trả về 1
Biểu thức chính quy toàn cục
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 23
$string = "MBT_6745 MBT-5712";
$pattern = '/MBT-[[:digit:]]{4}';
$count = preg_match_all($pattern, $string, $matches);
//Count có giá trị 2
foreach ($matches[0] as $match) {
echo '<div>' . $match . '</div>';
//Hiển thị MBT-6745 và MBT-5712
}
Sử dụng hàm preg_place để thay thế một chuỗi
mẫu với một xâu:
Hàm preg_replace
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 24
$items = 'MBT-6745 MBS-5729';
$items = preg_replace('/MB[ST]/', 'ITEM’, $items);
echo $items; // Hiển thị ITEM-6745 ITEM-5729
Sử dụng hàm preg_split để tách một chuỗi dựa
trên mẫu so khớp:
Hàm preg_split
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 25
$items = 'MBT-6745 HBS-5729, MBT-6824, and MBS-5214';
$pattern = '/[, ]+{and[ ]*)?/';
$items = preg_split($pattern, $items);
// $items chứa: 'MBT-6745', 'MBS-5729', 'MBT-6824',
'MBS-5214'
foreach ($items as $item) {
echo '<li>' . $item . '</li>';
}
Các biểu thức chính quy
dùng để kiểm tra tính hợp lệ
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 26
//Số điện thoại với định dạng: 999-999-9999
/^[[:digit:]]{3}-[[:digit:]]{3}-[[:digit:]]{4}$/
//Số thẻ ghi nợ với định dạng: 9999-9999-9999-9999
/^[[sdigit:]]{4}{-[[sdigit:]]{4}){3}$/
//Mã vùng với một trong hai định dạng sau: 99999 hoặc
99999-9999
/^[[sdigit s]]{5}(-[[sdigit s ]]{4})?$/
//Ngày với định dạng: mm/dd/yyyy
/^(0?[1-9]|l[0-2])/(0?[l-
9]|[12][[sdigit:]]|3[01])/[[:digit:]]{4}$/
Xác thực số điện thoại
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 27
$phone = '559-555-6624'; //Số điện
thoại hợp lệ
$phone_pattern = '/^[[:digit:]]{3}-[[:digit:]]{3}-
[[:digit:]]{4}$/';
$match = preg_match($phone_pattern, $phone); //Trả về 1
Xác thực ngày với
một thành phần không hợp lệ
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 28
$date = '8/10/209'; //Ngày không hợp lệ
$date_pattern = '/^(0?[1-9]|1[0-2])/'
. '(0?[1-
9]|[12][[:digit:]]|3[01])/'
.'[[:digit:]]{4}$/';
$match = preg match($date pattern, $date); // Trả về 0
Xác thực địa chỉ email đầy đủ
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 29
function valid_email ($email) {
$parts = explode(“@”, $email);
if (count($parts) != 2 ) return false;
if (strlen($parts[0]) > 64) return false;
if (strlen($parts[1]) > 255) return false;
$atom = '[[:alnum:]_!#$%&'*+/=?^`{|}~-]+';
$dotatom = '(.' . $atom . ')*';
$address = '(^' . $atom . $dotatam . '$)';
$char = '([^"])';
$esc = '(["])';
$text = '(' . $char . '|' . $esc . ')+';
$quoted = '(^"' . $text . '"$)';
$local_part = '/' . $address . '|' . $quoted . '/';
$local_match = preg_match($local_part, $parts[0]);
if ($local_match === false || $local_match != 1) return
false;
Xác thực địa chỉ email đầy đủ
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 30
$hostname = '([[:alnum:]]([-
[:alnum:]]{0,62}[[:alnum:]])?)';
$hostnames = '(' . $hostname . '(-' . $hostname . ')*)';
$top = '.[[:alnum:]]{2,6}';
$domain_part = '/^' . $hostnames . $top . '$/';
$domain_match = preg_match($domain_part, $parts[1]);
if ($domain_match === false || $domain_match != 1) return
false;
return true;
Tạo và ném ngoại lệ
Sử dụng biểu thức try-catch
Xử lý ngoại lệ
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 31
Cú pháp câu lệnh tạo ngoại lệ mới:
Cú pháp câu lệnh ném ngoại lệ:
Ngoại lệ (Exception)
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 32
new Exception($message [, $code])
throw $exception
Hàm có thể ném ra một ngoại lệ:
Ngoại lệ
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 33
function calculate_future_value($investment,
$interest_rate, $years)
{
if ($investment <= 0 || $interest_rate <= 0 ||
$years <= 0 ) {
throw new Exception("Please check your entries
for validity."); // Dữ liệu nhập vào không hợp lệ
}
$futurevalue = $investment;
for ($i = 1; $i <= $years; $i++) {
$future_value =($future_value + ($future_value
* $interest_rate * .01));
}
return round($futureValue, 2);
}
Câu lệnh sẽ kích hoạt việc ném ngoại lệ:
Ngoại lệ
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 34
$futureValue = calculate_future_value(10000, 0.06, 0);
// Ném ngoại lệ
Phương thức Giải thích
getMessage() Trả về thông báo được truyền vào cho Exception
getCode() Trả về mã lỗi được truyền vào cho Exception
getFile() Trả về file mà trong đó Exception đã được ném ra
getLine() Trả về dòng mã nơi Exception được ném ra
getTrace() Trả về mảng chứa ngăn xếp dò dấu cho đối tượng Exception
getTraceAsString() Trả về chuỗi chứa ngăn xếp dò dấu cho đối tượng Exception
Phương thức
của đối tượng Exception
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 35
Cú pháp:
Câu lệnh try - catch bắt một đối tượng ngoại lệ:
Biểu thức try-catch
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 36
try { statements }
catch (ExceptionClass $exceptionName) { statements }
[ catch (ExceptionClass $exceptionName) { statements } ]
try {
$fv = calculate_future_value(10000, 0.06, 0);
//Ném lỗi
echo 'Future value was calculated successfully.';
} catch (Exception $e) {
echo 'Error: ' . $e->getMessage();
}
Câu lệnh try-catch ném lại một đối tượng ngoại
lệ:
Biểu thức try-catch
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 37
try {
$fv = calculate_future_value($investment,
$annual_rate, $years);
} catch (Exception $e) {
// làm gì đó trước khi ném ngoại lệ
throw $e;
}
Câu lệnh try - catch bắt hai kiểu ngoại lệ:
Biểu thức try-catch
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 38
try {
$db = new PDO($dsn, 'mmuser', 'pa55word', $options);
//câu lệnh khác
} catch (PDOException $e) {
echo 'PDOException: ' . $e->getMessage();
} catch (Exception $e) {
echo 'Exception: ' . $e->getMessage();
}
Biểu thức chính quy định nghĩa một chuỗi mẫu
được dùng để tìm kiếm trong một chuỗi
Xác nhận trước là kiểu xác nhận đặc biệt yêu
cầu chuỗi mẫu con cần được so khớp để cả
chuỗi mẫu được so khớp
Sử dụng câu lệnh throw để ném một đối tượng
Exception (ngoại lệ)
Sử dụng câu lệnh try-catch để bắt bất kỳ ngoại
lệ nào được ném ra
Tổng kết bài học
Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 39

More Related Content

What's hot

Tài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoZendVN
 
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPTBài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPTMasterCode.vn
 
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTBài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTMasterCode.vn
 
Câu hỏi trắc nghiệm PHP
Câu hỏi trắc nghiệm PHPCâu hỏi trắc nghiệm PHP
Câu hỏi trắc nghiệm PHPZendVN
 
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTMasterCode.vn
 
Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 ZendVN
 
Giáo trình Zend Framework 2.0 - Nhúng template vào ứng dung ZF2 (P3) - Bài 7
Giáo trình Zend Framework 2.0 - Nhúng template vào ứng dung ZF2 (P3) - Bài 7Giáo trình Zend Framework 2.0 - Nhúng template vào ứng dung ZF2 (P3) - Bài 7
Giáo trình Zend Framework 2.0 - Nhúng template vào ứng dung ZF2 (P3) - Bài 7KhanhPham
 
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8 Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8 KhanhPham
 
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10KhanhPham
 
Zend Framework 2.0: Upload file và Multi upload files trong ZF2 - Bài 9
Zend Framework 2.0:  Upload file và Multi upload files trong ZF2 - Bài 9Zend Framework 2.0:  Upload file và Multi upload files trong ZF2 - Bài 9
Zend Framework 2.0: Upload file và Multi upload files trong ZF2 - Bài 9KhanhPham
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPelearninglabvn
 
Lập trình hướng đối tượng trong PHP
 Lập trình hướng đối tượng trong PHP Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHPNETKO Solution
 
Giao trinh thiet ke web bai 4 - php
Giao trinh thiet ke web   bai 4 - phpGiao trinh thiet ke web   bai 4 - php
Giao trinh thiet ke web bai 4 - phpcashdeptrai
 

What's hot (20)

Tài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng cao
 
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPTBài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
 
Web201 slide 3
Web201   slide 3Web201   slide 3
Web201 slide 3
 
Web201 slide 7
Web201   slide 7Web201   slide 7
Web201 slide 7
 
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTBài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
 
Web201 slide 6
Web201   slide 6Web201   slide 6
Web201 slide 6
 
Web201 slide 1
Web201   slide 1Web201   slide 1
Web201 slide 1
 
Câu hỏi trắc nghiệm PHP
Câu hỏi trắc nghiệm PHPCâu hỏi trắc nghiệm PHP
Câu hỏi trắc nghiệm PHP
 
Web201 slide 5
Web201   slide 5Web201   slide 5
Web201 slide 5
 
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
 
Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5
 
Giáo trình Zend Framework 2.0 - Nhúng template vào ứng dung ZF2 (P3) - Bài 7
Giáo trình Zend Framework 2.0 - Nhúng template vào ứng dung ZF2 (P3) - Bài 7Giáo trình Zend Framework 2.0 - Nhúng template vào ứng dung ZF2 (P3) - Bài 7
Giáo trình Zend Framework 2.0 - Nhúng template vào ứng dung ZF2 (P3) - Bài 7
 
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8 Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
 
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
 
Zend Framework 2.0: Upload file và Multi upload files trong ZF2 - Bài 9
Zend Framework 2.0:  Upload file và Multi upload files trong ZF2 - Bài 9Zend Framework 2.0:  Upload file và Multi upload files trong ZF2 - Bài 9
Zend Framework 2.0: Upload file và Multi upload files trong ZF2 - Bài 9
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHP
 
Lập trình hướng đối tượng trong PHP
 Lập trình hướng đối tượng trong PHP Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHP
 
Giao trinh thiet ke web bai 4 - php
Giao trinh thiet ke web   bai 4 - phpGiao trinh thiet ke web   bai 4 - php
Giao trinh thiet ke web bai 4 - php
 
Web3012 slide 8
Web3012   slide 8Web3012   slide 8
Web3012 slide 8
 
Php02 ngon nguphp
Php02 ngon nguphpPhp02 ngon nguphp
Php02 ngon nguphp
 

Viewers also liked

Content marketing - Buffalo tuor
Content marketing - Buffalo tuorContent marketing - Buffalo tuor
Content marketing - Buffalo tuorLe Linh
 
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPTBài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPTMasterCode.vn
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webMasterCode.vn
 

Viewers also liked (11)

Web301 slide 1
Web301   slide 1Web301   slide 1
Web301 slide 1
 
Web301 slide 2
Web301   slide 2Web301   slide 2
Web301 slide 2
 
Web301 slide 6
Web301   slide 6Web301   slide 6
Web301 slide 6
 
Web301 slide 4
Web301   slide 4Web301   slide 4
Web301 slide 4
 
Web3012 assignment
Web3012   assignmentWeb3012   assignment
Web3012 assignment
 
Content marketing - Buffalo tuor
Content marketing - Buffalo tuorContent marketing - Buffalo tuor
Content marketing - Buffalo tuor
 
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPTBài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
 
Web301 slide 7
Web301   slide 7Web301   slide 7
Web301 slide 7
 
Slide1 html5
Slide1 html5Slide1 html5
Slide1 html5
 
Slide5 html5
Slide5 html5Slide5 html5
Slide5 html5
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
 

Similar to Web301 slide 3

PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docxNgnHng26
 
3 Function
3 Function3 Function
3 FunctionCuong
 
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdfKinHongnh
 
3 Function
3 Function3 Function
3 FunctionCuong
 
Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512lekytho
 
b6-190213084710.pdf
b6-190213084710.pdfb6-190213084710.pdf
b6-190213084710.pdfQuyVo27
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4pisu412
 
Devwork.vn Tài liệu lập trình PHP Laravel
Devwork.vn Tài liệu lập trình PHP LaravelDevwork.vn Tài liệu lập trình PHP Laravel
Devwork.vn Tài liệu lập trình PHP LaravelDevwork
 
The Art of Readable Code - DongPV
The Art of Readable Code - DongPVThe Art of Readable Code - DongPV
The Art of Readable Code - DongPVĐông Đô
 

Similar to Web301 slide 3 (20)

PHP Regular expressions
PHP Regular expressionsPHP Regular expressions
PHP Regular expressions
 
Kiem tra javascript
Kiem tra javascriptKiem tra javascript
Kiem tra javascript
 
Php Csdlweb06
Php Csdlweb06Php Csdlweb06
Php Csdlweb06
 
Lesson 2 lý thuyết
Lesson 2 lý thuyếtLesson 2 lý thuyết
Lesson 2 lý thuyết
 
Kiem tra Javasrctip
Kiem tra JavasrctipKiem tra Javasrctip
Kiem tra Javasrctip
 
Con trỏ trong C
Con trỏ trong CCon trỏ trong C
Con trỏ trong C
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docx
 
3 Function
3 Function3 Function
3 Function
 
C9 templates
C9 templatesC9 templates
C9 templates
 
C9 templates
C9 templatesC9 templates
C9 templates
 
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
 
3 Function
3 Function3 Function
3 Function
 
Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512
 
b6-190213084710.pdf
b6-190213084710.pdfb6-190213084710.pdf
b6-190213084710.pdf
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
 
Chuong 08 tai dinh nghia
Chuong 08 tai dinh nghiaChuong 08 tai dinh nghia
Chuong 08 tai dinh nghia
 
Devwork.vn Tài liệu lập trình PHP Laravel
Devwork.vn Tài liệu lập trình PHP LaravelDevwork.vn Tài liệu lập trình PHP Laravel
Devwork.vn Tài liệu lập trình PHP Laravel
 
python03.pdf
python03.pdfpython03.pdf
python03.pdf
 
The Art of Readable Code - DongPV
The Art of Readable Code - DongPVThe Art of Readable Code - DongPV
The Art of Readable Code - DongPV
 
Bai 18
Bai 18Bai 18
Bai 18
 

More from tuanduongcntt (20)

Slide4 html5
Slide4 html5Slide4 html5
Slide4 html5
 
Slide3 html5
Slide3 html5Slide3 html5
Slide3 html5
 
Slide2 html5
Slide2 html5Slide2 html5
Slide2 html5
 
Slide6 html5
Slide6 html5Slide6 html5
Slide6 html5
 
Web2032 assignment
Web2032   assignmentWeb2032   assignment
Web2032 assignment
 
Web203 slide 9
Web203   slide 9Web203   slide 9
Web203 slide 9
 
Web203 slide 8
Web203   slide 8Web203   slide 8
Web203 slide 8
 
Web203 slide 7
Web203   slide 7Web203   slide 7
Web203 slide 7
 
Web203 slide 5
Web203   slide 5Web203   slide 5
Web203 slide 5
 
Web203 slide 4
Web203   slide 4Web203   slide 4
Web203 slide 4
 
Web203 slide 3
Web203   slide 3Web203   slide 3
Web203 slide 3
 
Web203 slide 2
Web203   slide 2Web203   slide 2
Web203 slide 2
 
Web203 slide 1
Web203   slide 1Web203   slide 1
Web203 slide 1
 
Web2032 slide 10
Web2032   slide 10Web2032   slide 10
Web2032 slide 10
 
Web2022 slide 7
Web2022   slide 7Web2022   slide 7
Web2022 slide 7
 
Web2022 slide 6
Web2022   slide 6Web2022   slide 6
Web2022 slide 6
 
Web2022 slide 5
Web2022   slide 5Web2022   slide 5
Web2022 slide 5
 
Web2022 slide 4
Web2022   slide 4Web2022   slide 4
Web2022 slide 4
 
Web2022 slide 3
Web2022   slide 3Web2022   slide 3
Web2022 slide 3
 
Web2022 slide 2
Web2022   slide 2Web2022   slide 2
Web2022 slide 2
 

Web301 slide 3

  • 1. Bài 3 Một số kỹ thuật lập trình PHP nâng cao
  • 2. Cách tạo một biểu thức chính quy và xử lý bằng hàm preg_match Cách sử dụng biểu thức chính quy nhiều dòng, toàn cục Cách sử dụng hàm preg_replace và preg_split để làm việc với biểu thức chính quy Cơ chế sử dụng biểu thức chính quy trong xác thực dữ liệu Cơ chế tạo, ném và xử lý ngoại lệ Mục tiêu Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 2
  • 3. Tạo và sử dụng biểu thức chính quy So khớp các ký tự Sử dụng lớp ký tự Tạo chuỗi mẫu (pattern) Sử dụng xác nhận trước (look-ahead assertion) Sử dụng biểu thức chính quy nhiều dòng Sử dụng biểu thức chính quy toàn cục Thay thế biểu thức chính quy bằng một xâu Làm việc với biểu thức chính quy Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 3
  • 4. Hàm so khớp biểu thức chính quy: Cách tạo một biểu thức chính quy: Hai xâu để kiểm tra: Cách tìm chuỗi: Biểu thức chính quy Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 4 preg_match($pattern, $string) $pattern = '/Harris/'; $author = 'Ray Harris'; $editor = 'Joel Murach'; $author_match = preg_match($pattern, $author); $editor_match = preg_match($pattern, $editor);
  • 5. Kiểm tra lỗi trong biểu thức chính quy Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 5 if ($author_match === false) { echo 'Error testing author name'; } else if ($author_match === 0) { echo 'Author name does not contain Harris'; } else { echo 'Author name contains Harris'; }
  • 6. Một biểu thức chính quy không phân biệt chữ hoa hay chữ thường: Cách sử dụng: Biểu thức chính quy không phân biệt chữ hoa hay thường Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 6 $pattern = '/murach/i'; $editor = 'Joel Murach'; $editor_match = preg_match($pattern, $editor);
  • 7. Khái niệm biểu thức chính quy (regular expression) Khái niệm chuỗi mẫu (pattern) Chuỗi mẫu cho các ký tự đặc biệt: Chuỗi mẫu (pattern) Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 7 Chuỗi mẫu Ý nghĩa Ký tự / Ký tự / t Tab n Dòng (line) mới r Quay lại f Form feed xhh Ký tự Latin-1 với giá trị là hai chữ số hệ thập phân
  • 8. So khớp các ký tự đặc biệt Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 8 $string = "© 2010 Mike's Music. All rights reserved (5/2010)."; preg_match('/xA9/', $string); //So khớp © và trả về 1 preg_match('///', $string); //Trà về false và đưa ra cảnh báo preg_match('//', $string); //So khớp / và trả về 1 preg_match('//', $string); //So khớp và trả về 1
  • 9. Chuỗi mẫu Ý nghĩa . Bất kỳ ký tự đơn nào ngoại trừ ký tự dòng mới w Bất kỳ chữ cái, số và dấu _ W Bất kỳ ký tự nào ngoại trừ chữ cái, số và dấu _ d Bất kỳ chữ số nào D Bất kỳ ký tự nào ngoại trừ chữ số s Bất kỳ khoảng trắng nào (tab, dấu cách, dòng mới, …) S Bất kỳ ký tự nào ngoại trừ khoảng trắng Chuỗi mẫu cho các loại ký tự Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 9
  • 10. Các loại ký tự so khớp Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 10 $string = 'The product code is MBT-3461'; preg_match('/MB.', $string); //So khớp MBT và trả về 1 preg_match('/MBd', $string); //Không so khớp gì và trả về 0 preg_match('/MBT-d', $string); //So khớp MBT-3 và trả về 1
  • 11. Sử dụng lớp ký tự Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 11 $string = 'The product code is MBT-3461'; preg_match('/MB[TF]', $string); //So khớp MBT và trả về 1 preg_match('/[.]/', $string); //So khớp . và trả về 1 preg_match('/[13579]/', $string); //So khớp 3 và trả về 1
  • 12. Sử dụng các siêu ký tự (metacharacter) Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 12 preg_match('/MB[^TF]', $string); //Không so khớp gì và trả về 0 preg_match('/MBT[^^]/', $string); //So khớp MBT- và trả về 1 preg_match('/MBT-[1-5]/', $string); //So khớp MBT-3 và trả về 1 preg_match('/MBT[_*-]/',$string); //So khớp MBT- và trả về 1
  • 13. Sử dụng dấu ngoặc Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 13 preg_match('/MB[[:punct:]]', $string); //So khớp MBT- và trả về 1 preg_match('/MBT[[:digit:]]/', $string); //Không so khớp gì và trả về 0 preg_match('/MB[[:upper:]]/', $string); //So khớp MBT và trả về 1
  • 14. Chuỗi mẫu Ý nghĩa ^ Bắt đầu xâu $ Kết thúc xâu b Bắt đầu hoặc kết thúc một từ (không nằm trong ngoặc) B Vị trí không phải là bắt đầu hoặc kết thúc một từ Chuỗi mẫu cho vị trí xâu Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 14
  • 15. So khớp vị trí xâu Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 15 $string = 'Ray Harris'; preg_match('/^Ray/', $string); //Trả về 1 preg_match('/Harris$/', $string); //Trả về 1 preg_match('/^Harris/', $string); //Trả về 0 $editor = 'Anne Boehm'; preg_match('/Ann/',$editor); //Trả về 1 preg_match('/Annb/', $editor); //Trả về 0
  • 16. So khớp chuỗi mẫu con Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 16 $name = 'Rob Rebertson'; preg_match('/^(Rob)|(Bob)b/', $name); //Trả về 1 preg_match('/^(www) 1/', $name); //Trả về 1
  • 17. So khớp các chuỗi mẫu lặp lại Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 17 $phone = '559-555-6627'; preg_match('/^d{3}-d{3}-d{4}$/', $phone); //Trả về 1 $fax = '(559) 555-6635'; preg_match('/^(d{3}) ?d{3}-d{4}$/', $fax); //Trả về 1 $phone_pattern = '^(d{3}-)|((d{3}) ?)d{3}-d{4}$'; preg_match($phone_pattern, $phone); //Trả về 1 preg_match($phone_pattern, $fax); //Trả về 1
  • 18. Các xác nhận trước: Ví dụ: Xác nhận trước (Look-ahead assertion) Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 18 (?=[[:digit:]] //Ký tự kế tiếp trong chuỗi mẫu phải là chữ số (?=.*[[:digit:]]) //Chuỗi mẫu phải chứa ít nhất một chữ số $pattern = '/^(?=.*[[:digit:]])[[:alnum:]]{6}$'; preg_match($pattern, 'Harris'); //Xác nhận thất bại và trả về 0 preg_match($pattern, 'Harri5'); //Trả về 1
  • 19. Xác nhận trước đảo ngược Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 19 $pattern = '/^(?!3[2-9])[0-3][[:digit:]]$/'; preg_match($pattern, '32'); //Xác nhận thất bại và trả về 0 preg_match($pattern, '31'); //Trả về 1
  • 20. Chuỗi mẫu: Các thành phần: Chuỗi mẫu kiểm tra độ phức tạp của mật khẩu Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 20 $pw_pattern = '/^(?=.*[[:digit:]])(?=.*[[:punct:]])[[:print:]]{6,}$/' ^ //Bắt đầu xâu (?=.*[[:digit:]]) //Ít nhất một chữ số (?=.*[[:punct:]]) //Ít nhất một dấu câu [[:print:]]{6,} //Ít nhất sáu ký tự in được $ //Kết thúc xâu
  • 21. Sử dụng chuỗi mẫu: Chuỗi mẫu kiểm tra độ phức tạp của mật khẩu Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 21 $password1 = 'sup3rsecret'; $password2 = 'sup3rse(ret'; preg_match($pw_pattern, $password1); //Trả về 0 preg_match($pw_pattern, $password2); //Trả về 1
  • 22. Biểu thức chính quy nhiều dòng Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 22 $string = "Ray HarrisnAuthor"; $pattern1 = '/Harris$/'; preg_match($pattern1, $string); //Không so khớp Harris và trả về 0 $pattern2 = '/Harris$/m'; preg_match($pattern2, $string); //So khớp Harris và trả về 1
  • 23. Biểu thức chính quy toàn cục Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 23 $string = "MBT_6745 MBT-5712"; $pattern = '/MBT-[[:digit:]]{4}'; $count = preg_match_all($pattern, $string, $matches); //Count có giá trị 2 foreach ($matches[0] as $match) { echo '<div>' . $match . '</div>'; //Hiển thị MBT-6745 và MBT-5712 }
  • 24. Sử dụng hàm preg_place để thay thế một chuỗi mẫu với một xâu: Hàm preg_replace Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 24 $items = 'MBT-6745 MBS-5729'; $items = preg_replace('/MB[ST]/', 'ITEM’, $items); echo $items; // Hiển thị ITEM-6745 ITEM-5729
  • 25. Sử dụng hàm preg_split để tách một chuỗi dựa trên mẫu so khớp: Hàm preg_split Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 25 $items = 'MBT-6745 HBS-5729, MBT-6824, and MBS-5214'; $pattern = '/[, ]+{and[ ]*)?/'; $items = preg_split($pattern, $items); // $items chứa: 'MBT-6745', 'MBS-5729', 'MBT-6824', 'MBS-5214' foreach ($items as $item) { echo '<li>' . $item . '</li>'; }
  • 26. Các biểu thức chính quy dùng để kiểm tra tính hợp lệ Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 26 //Số điện thoại với định dạng: 999-999-9999 /^[[:digit:]]{3}-[[:digit:]]{3}-[[:digit:]]{4}$/ //Số thẻ ghi nợ với định dạng: 9999-9999-9999-9999 /^[[sdigit:]]{4}{-[[sdigit:]]{4}){3}$/ //Mã vùng với một trong hai định dạng sau: 99999 hoặc 99999-9999 /^[[sdigit s]]{5}(-[[sdigit s ]]{4})?$/ //Ngày với định dạng: mm/dd/yyyy /^(0?[1-9]|l[0-2])/(0?[l- 9]|[12][[sdigit:]]|3[01])/[[:digit:]]{4}$/
  • 27. Xác thực số điện thoại Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 27 $phone = '559-555-6624'; //Số điện thoại hợp lệ $phone_pattern = '/^[[:digit:]]{3}-[[:digit:]]{3}- [[:digit:]]{4}$/'; $match = preg_match($phone_pattern, $phone); //Trả về 1
  • 28. Xác thực ngày với một thành phần không hợp lệ Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 28 $date = '8/10/209'; //Ngày không hợp lệ $date_pattern = '/^(0?[1-9]|1[0-2])/' . '(0?[1- 9]|[12][[:digit:]]|3[01])/' .'[[:digit:]]{4}$/'; $match = preg match($date pattern, $date); // Trả về 0
  • 29. Xác thực địa chỉ email đầy đủ Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 29 function valid_email ($email) { $parts = explode(“@”, $email); if (count($parts) != 2 ) return false; if (strlen($parts[0]) > 64) return false; if (strlen($parts[1]) > 255) return false; $atom = '[[:alnum:]_!#$%&'*+/=?^`{|}~-]+'; $dotatom = '(.' . $atom . ')*'; $address = '(^' . $atom . $dotatam . '$)'; $char = '([^"])'; $esc = '(["])'; $text = '(' . $char . '|' . $esc . ')+'; $quoted = '(^"' . $text . '"$)'; $local_part = '/' . $address . '|' . $quoted . '/'; $local_match = preg_match($local_part, $parts[0]); if ($local_match === false || $local_match != 1) return false;
  • 30. Xác thực địa chỉ email đầy đủ Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 30 $hostname = '([[:alnum:]]([- [:alnum:]]{0,62}[[:alnum:]])?)'; $hostnames = '(' . $hostname . '(-' . $hostname . ')*)'; $top = '.[[:alnum:]]{2,6}'; $domain_part = '/^' . $hostnames . $top . '$/'; $domain_match = preg_match($domain_part, $parts[1]); if ($domain_match === false || $domain_match != 1) return false; return true;
  • 31. Tạo và ném ngoại lệ Sử dụng biểu thức try-catch Xử lý ngoại lệ Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 31
  • 32. Cú pháp câu lệnh tạo ngoại lệ mới: Cú pháp câu lệnh ném ngoại lệ: Ngoại lệ (Exception) Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 32 new Exception($message [, $code]) throw $exception
  • 33. Hàm có thể ném ra một ngoại lệ: Ngoại lệ Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 33 function calculate_future_value($investment, $interest_rate, $years) { if ($investment <= 0 || $interest_rate <= 0 || $years <= 0 ) { throw new Exception("Please check your entries for validity."); // Dữ liệu nhập vào không hợp lệ } $futurevalue = $investment; for ($i = 1; $i <= $years; $i++) { $future_value =($future_value + ($future_value * $interest_rate * .01)); } return round($futureValue, 2); }
  • 34. Câu lệnh sẽ kích hoạt việc ném ngoại lệ: Ngoại lệ Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 34 $futureValue = calculate_future_value(10000, 0.06, 0); // Ném ngoại lệ
  • 35. Phương thức Giải thích getMessage() Trả về thông báo được truyền vào cho Exception getCode() Trả về mã lỗi được truyền vào cho Exception getFile() Trả về file mà trong đó Exception đã được ném ra getLine() Trả về dòng mã nơi Exception được ném ra getTrace() Trả về mảng chứa ngăn xếp dò dấu cho đối tượng Exception getTraceAsString() Trả về chuỗi chứa ngăn xếp dò dấu cho đối tượng Exception Phương thức của đối tượng Exception Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 35
  • 36. Cú pháp: Câu lệnh try - catch bắt một đối tượng ngoại lệ: Biểu thức try-catch Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 36 try { statements } catch (ExceptionClass $exceptionName) { statements } [ catch (ExceptionClass $exceptionName) { statements } ] try { $fv = calculate_future_value(10000, 0.06, 0); //Ném lỗi echo 'Future value was calculated successfully.'; } catch (Exception $e) { echo 'Error: ' . $e->getMessage(); }
  • 37. Câu lệnh try-catch ném lại một đối tượng ngoại lệ: Biểu thức try-catch Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 37 try { $fv = calculate_future_value($investment, $annual_rate, $years); } catch (Exception $e) { // làm gì đó trước khi ném ngoại lệ throw $e; }
  • 38. Câu lệnh try - catch bắt hai kiểu ngoại lệ: Biểu thức try-catch Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 38 try { $db = new PDO($dsn, 'mmuser', 'pa55word', $options); //câu lệnh khác } catch (PDOException $e) { echo 'PDOException: ' . $e->getMessage(); } catch (Exception $e) { echo 'Exception: ' . $e->getMessage(); }
  • 39. Biểu thức chính quy định nghĩa một chuỗi mẫu được dùng để tìm kiếm trong một chuỗi Xác nhận trước là kiểu xác nhận đặc biệt yêu cầu chuỗi mẫu con cần được so khớp để cả chuỗi mẫu được so khớp Sử dụng câu lệnh throw để ném một đối tượng Exception (ngoại lệ) Sử dụng câu lệnh try-catch để bắt bất kỳ ngoại lệ nào được ném ra Tổng kết bài học Bài 3 - Một số kỹ thuật lập trình PHP nâng cao 39