際際滷
Submit Search
Web301 slide 3
0 likes
577 views
T
tuanduongcntt
Follow
L畉p Tr狸nh Web PHP N但ng Cao - Gi叩o Tr狸nh FPT
Read less
Read more
1 of 39
Download now
Downloaded 69 times
More Related Content
Web301 slide 3
1.
Bi 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 hm preg_match C叩ch s畛 d畛ng bi畛u th畛c ch鱈nh quy nhi畛u d嘆ng, ton c畛c C叩ch s畛 d畛ng hm preg_replace v preg_split 畛 lm 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 Bi 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 ton c畛c Thay th畉 bi畛u th畛c ch鱈nh quy b畉ng m畛t x但u Lm vi畛c v畛i bi畛u th畛c ch鱈nh quy Bi 3 - M畛t s畛 k畛 thu畉t l畉p tr狸nh PHP n但ng cao 3
4.
Hm 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 Bi 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 Bi 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 Bi 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) Bi 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 Bi 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 no 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畛 no ngo畉i tr畛 ch畛 c叩i, s畛 v d畉u _ d B畉t k畛 ch畛 s畛 no D B畉t k畛 k箪 t畛 no ngo畉i tr畛 ch畛 s畛 s B畉t k畛 kho畉ng tr畉ng no (tab, d畉u c叩ch, d嘆ng m畛i, ) S B畉t k畛 k箪 t畛 no ngo畉i tr畛 kho畉ng tr畉ng Chu畛i m畉u cho c叩c lo畉i k箪 t畛 Bi 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 Bi 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畛 Bi 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) Bi 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 Bi 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 Bi 3 - M畛t s畛 k畛 thu畉t l畉p tr狸nh PHP n但ng cao 14
15.
So kh畛p v畛
tr鱈 x但u Bi 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 Bi 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 Bi 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) Bi 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 Bi 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 thnh
ph畉n: Chu畛i m畉u ki畛m tra 畛 ph畛c t畉p c畛a m畉t kh畉u Bi 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 Bi 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 Bi 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 ton c畛c Bi 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 hm
preg_place 畛 thay th畉 m畛t chu畛i m畉u v畛i m畛t x但u: Hm preg_replace Bi 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 hm
preg_split 畛 t叩ch m畛t chu畛i d畛a tr棚n m畉u so kh畛p: Hm preg_split Bi 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畛 Bi 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})?$/ //Ngy 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 Bi 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 ngy
v畛i m畛t thnh ph畉n kh担ng h畛p l畛 Bi 3 - M畛t s畛 k畛 thu畉t l畉p tr狸nh PHP n但ng cao 28 $date = '8/10/209'; //Ngy 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 畛 Bi 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 畛 Bi 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畛 Bi 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) Bi 3 - M畛t s畛 k畛 thu畉t l畉p tr狸nh PHP n但ng cao 32 new Exception($message [, $code]) throw $exception
33.
Hm c坦 th畛
n辿m ra m畛t ngo畉i l畛: Ngo畉i l畛 Bi 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 vo 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畛 Bi 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 vo cho Exception getCode() Tr畉 v畛 m達 l畛i 動畛c truy畛n vo 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 ngn x畉p d嘆 d畉u cho 畛i t動畛ng Exception getTraceAsString() Tr畉 v畛 chu畛i ch畛a ngn x畉p d嘆 d畉u cho 畛i t動畛ng Exception Ph動董ng th畛c c畛a 畛i t動畛ng Exception Bi 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 Bi 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 Bi 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) { // lm 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 Bi 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畛 no 動畛c n辿m ra T畛ng k畉t bi h畛c Bi 3 - M畛t s畛 k畛 thu畉t l畉p tr狸nh PHP n但ng cao 39
Download