Web301 slide 3

44 %
56 %
Information about Web301 slide 3
News & Politics

Published on May 11, 2014

Author: tuanduongcntt

Source: slideshare.net

Description

Lập Trình Web PHP Nâng Cao - Giáo Trình FPT

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

Add a comment

Related presentations

Cfbp barometre octobre

Cfbp barometre octobre

November 10, 2014

VITOGAZ vous présente: CFBP baromètre gpl carburant

Ata Escrita da 16ª Sessão Ordinária realizada em 16/10/2014 pela Câmara de Vereado...

Ata Escrita da 10ª Sessão Extraordinária realizada em 16/10/2014 pela Câmara de Ve...

Rx1 nasil kullanilir

Rx1 nasil kullanilir

November 8, 2014

Rx1 zayiflama hapi, kullanimi nasildir, yan etkileri var mi? yan etkiler var ise h...

Esposto del MoVimento 5 Stelle sul Patto del Nazareno

Slide Servizi postali

Slide Servizi postali

November 7, 2014

Slides per i servizi postali presentati in occasione dell'incontro azienda e organ...

Related pages

ENGLISH OPERATING INSTRUCTIONS 2 DEUTSCH ...

ENGLISH OPERATING INSTRUCTIONS ... Slide the lever to the direction of “DOCK”, ... (CF-WEB301).indd 3 2010/07/01 13:23:51. 4
Read more

Design and logic issues Yes Memory corruption (buffer ...

Slide 3: Slide 4: Slide 5: Slide 6: Slide 7: Design and logic issues Yes Memory corruption (buffer overflows) Yes-- Malicious script injection --Yes ...
Read more

Matrix slide show OK, Xtreme slide show a problem Why? 2.3 ...

Matrix slide show OK, Xtreme slide show a problem Why? 2.3 seems to be a problem and nobody seems to have the answers.
Read more

Sealcoating - Tri-County Paving - Asphalt Paving - Sealcoating

Sealcoating July 14, 2011. admin. Permalink. No category No tags Comments are closed. 41 ... Blog | Site Map | SEO and Website by Web301 ...
Read more

Web3.0 Responsive Layout Multiple Color Business Mobile ...

Revolution Slider; Accordion slider; Nivo Slider; CameraSlider; Flex Slider; ... 3 Column; 4 Column; Home; Sliders. Slider Container. Revolution Slider ...
Read more

In-Vehicle Mounting Solutions | Docking Stations | Install ...

In-Vehicle Mounting Solutions | Docking Stations ... button, cable lock slot, and slide release. Warranty 3-Year Standard Warranty on all metal parts
Read more

Havis Products | C-3334-1 Adapter Mounting Plate Assembly ...

Adapter mounting plate assembly for Panasonic docking station Model CF-WEB301; Mounts CF-WEB273, CF-WEB273-2 & CFWEB301M to C-MD-202 tilt swivel (sold ...
Read more

Panasonic Toughbook 30 Mounting Interface Plate

Mounting Interface Plate for the Panasonic CF-30 Port Replicator CF-WEB301 ... Panasonic Toughbook 30 Mounting Interface Plate. ... 3 year limited warranty;
Read more