REGULAR EXPRESSION
- Regular expression là biểu thức mô tả mẫu dữ liệu cần so khớp, mỗi expression bắt bắt đầu và kết thúc bằng một trong các ký tự / $ #
- Trong expression có thể dùng hai dấu ngoặc vuông để diễn tả lớp ký tự . Mỗi lớp ký tự sẽ so khớp với 1 ký tự thực sự
- Trong expression có thể dùng pL để diễn tả 1 ký tự unicode
- Trong expression có thể dùng s để diễn tả 1 ký tự khoảng trắng
- Trong expression có thể dùng để diễn tả 1 ký tự xuống hàng
1.Tìm chuỗi con
Tìm chuỗi con:
<pre>
<?php
$str = 'Anh thương em Anh đi đâu đâu';
$regex = '/a[a-z][a-z] /';
if (preg_match($regex, $str) ==true) echo "Tìm thấy" ; else echo "Không thấy";
echo "<br>";
$regex = '/a[a-z][a-z] /i'; //không phân biệt hoa thường
if (preg_match($regex, $str) ==true) echo "Tìm thấy" ;else echo "Không thấy";
?> <hr/>
2.Ví dụ 2: Tìm chuỗi unicode
Tìm chuỗi con Unicode: <pre>
<?php
$str = 'Vạn lý thanh giang vạn lý thiên. Nhất thôn tang giá, nhất thôn yên. Ngư ông thuỵ trước vô nhân hoán. Quá ngọ tỉnh lai tuyết mãn thuyền. ';
$regex = '/[lv]pLs/u'; // số thì dùng N
preg_match_all($regex, $str,$b) ; print_r($b);
?>
<hr/>Tìm unincode<pre>
<?php $string = 'Bóng gương thấp thoáng dưới mành
Cỏ cây cũng muốn nổi tình mây mưa
Chìm đáy nước cá lờ đờ lặn
Lửng da trời nhạn ngẩn ngơ sa
Hương trời đắm nguyệt say hoa
Tây Thi mất vía, Hằng Nga giật mình';
preg_match_all('/ngpL+s/iu', $string, $e);
print_r($e);
?><hr />
3.Ví dụ 3: Tách chuỗi con
Tách chuỗi :
<pre>
<?php
$string = 'Mồi phú quí dữ làng xa mã.
Bả vinh hoa lừa gã công khanh.
Giấc Nam Kha khéo bất bình.
Bừng con mắt dậy thấy mình tay không.';
$a= preg_split('/ /', $string);
print_r($a);
?> <hr/>
4.Ví dụ 4: Tìm và thay thế
Tìm và thay thế 1:
<pre>
<?php
$str= 'Hôm nay là ngày : <b>2013-4-15</b>';
$str = preg_replace('/(19|20)(d{2})-(d{1,2})-(d{1,2})/', '4/3/12', $str);
echo $str;
?> <hr/>
Tìm và thay thế 2: <pre>
<?php
$str = 'Nguyễn Văn Tèo';
$str = preg_replace('/ss+/', ' ', $str);
echo $str;
?> <hr/>
Tìm và thay thế 3: <pre>
<?php
$str = 'Nguyễn @ Văn ! Tèo ';
$str= preg_replace('/[s@!]/', ' ', $str,-1,$count);
echo $str , " , ", $count;
?> <hr/>
5.Ví dụ 5: Tìm số
Tìm số
<pre>
<?php
$subject = "Ngày sinh: 15/04/1990";
preg_match('/d+/', $subject, $m);
print_r($m);
?> <hr/>
6.Ví dụ 6: Tìm số và lấy ra dùng
Tìm số và lấy ra dùng
<pre>
<?php $subject = "Ngày sinh: 15/04/1990";
preg_match_all(/d+/, $subject, $matches,PREG_SET_ORDER);
print_r($matches); echo "<br>";
echo $matches[2][0],"-", $matches[1][0],"-",$matches[0][0]; ;
?> <hr/>
7.Ví dụ 7: Email valid
Email Valid
<pre>
<?php
$mail1 = "abc123@lolhaha"; $mail2 = "teo@somesite.com";
$regex = '/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/';
if (preg_match($regex, $mail1)) echo $mail1 . " là địa chỉ hợp lệ";
else echo $mail1 . " là địa chỉ không hợp lệ";
echo "<br>";
if (preg_match($regex, $mail2)) echo $mail2 . " là địa chỉ hợp lệ";
else echo $mail2 . " là địa chỉ không hợp lệ";
?>
<br />
<?php
$mail3= "teonguyen.123@vbu.edu.vn";
$regex='/^[^W][a-zA-Z0-9_]+(.[a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+(.[a-zA-Z0-9_]+)*.[a-zA-Z]{2,4}$/';
if (preg_match($regex, $mail3)) echo "$mail3 là địa chỉ hợp lệ";
else echo "$mail3 là địa chỉ không hợp lệ";
?> <hr />
8.Ví dụ 8: IP valid
IP valid<pre>
<?php $ip = "255.255.255.255";
$regex= '/^(25[0-5]|2[0-4]d|1dd|[1-9]d|d)([.](25[0-5]|2[0-4]d|1dd|[1-9]d|d)){3}$/';
if (preg_match($regex,$ip)) echo "Địa chỉ $ip là hợp lệ";
else "Địa chỉ $ip không hợp lệ"; ?> <hr/>
9.Ví dụ 9: Phone valid
Phone valid <pre>
<?php $phone = "(232) 542-6794";
$regex='/^([0-9]{3}) [0-9]{3}[-. ][0-9]{4}$/';
if (preg_match($regex, $phone)) echo "Số $phone hợp lệ";
else echo "Số $phone không hợp lệ";
?> <hr/>