Hiển thị các bài đăng có nhãn PHP NÂNG CAO. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn PHP NÂNG CAO. Hiển thị tất cả bài đăng

Thứ Năm, 29 tháng 9, 2016

PHP NÂNG CAO - Cấu hình virtual host trên local host

Thường thì khi chạy ứng dụng web trên local host ta thường chạy theo url http://localhost/project-name/
Việc ta cấu hình virtural host giúp ta có thể thay đổi url web theo dạng domain ngắn gọn và dễ nhớ, chẳng hạn như là http://hocphp, http://mysite.local.... thành bất cứ tên nào mà ta muốn.
Hướng dẫ cấu hình virtual host cho local host.

- Nếu như ta hay sử dụng url web mặc định của apache là http://localhost/hocphp/ thì nay ta sẽ cấu hình thành url http://hocphp/
- Bạn ở file httpd.conf theo đường dẫn
1
C:\xampp\apache\conf
Cấu hình virtual host cho local host

Sau đó tìm dòng 
1
# Virtual hosts
Và thêm vào dòng sau
1
NameVirtualHost *
- Cấu hình virtual host
1
2
3
4
5
<VirtualHost *>
   DocumentRoot "C:/xampp/htdocs"
   ServerName localhost
   DirectoryIndex index.php
</VirtualHost>
Đây là localhost mặc định, đang được trỏ mặc định đến htdocs
1
2
3
4
5
<VirtualHost *>
   DocumentRoot "C:/xampp/htdocs/hocphp"
   ServerName hocphp
   DirectoryIndex index.php
</VirtualHost>
Và hocphp là tên mình đặt, nó sẽ là url đến website của mình, nó đang được trỏ đến C:/xampp/htdocs/hocphp

Tiếp theo chúng ta mở file host theo đường dẫn C:\Windows\System32\Drivers\etc\hosts và thêm vào cuối file nội dung sau
1
2
127.0.0.1 localhost
127.0.0.1 hocphp
Hosts file virtual host

Sau đó Restart lại apache là xong, lúc này ta có thể truy cập vào web qua đường dẫn
1
http://hocphp/
Bạn có thể tạo nhiều virtual host cho nhiều project của mình, tương tự như trên ta cần thêm vào file conf và file hosts là xong

nguồn http://phpandmysql.net/
Read More

PHP nâng cao - Regular expressions trong PHP

Regular expression trong PHP là gì? Lý thuyết dài dòng cũng không nhớ làm gì, hiểu nôm na thì Regular expression là một biểu thức có quy tắc được viết ra để quy định, kiểm tra các chuỗi kí tự khác. Ví dụ bạn muốn check xem người ta nhập địa chỉ mail có đúng không, số điện thoại có đúng định dạng không...
Regular expression trong PHP rất rộng, chúng ta sẽ tìm hiểu có gì đặc biệt

- Một chuỗi các kí tự nhập vào từ bàn phím sẽ có dạng như thế nào? Nó bao gồm các kí tự từ A - Z, kí tự số từ 0 - 9 và các kí tự đặc biệt như là ? / | \ ^ % ...

A. QUY ƯỚC

Trong regular expression quy ước một số biểu thức như sau

1 .  ^ chuỗi kí tự bắt đầu bởi 
1
$str = "/^a/"; // Chuỗi bắt đầu bởi a
2 . $ chuỗi kí tự kết thúc bởi
1
$str = "/b$/"; // Chuỗi kết thúc bởi b
3 . [a-z] , [A-Z], [0-9] ; Cho phép các kí tự từ a-z, A-Z và các chữ số từ 0-9

4 . Dấu . (dấu chấm trong RE) ; dấu chấm trong RE được hiểu là kí tự bất kỳ

5 . Dấu + (dấu cộng); Lặp lại ký tự hay cụm ký tự đứng trước nó
1
2
3
4
a+ : lặp lại chữ a, phải có ít nhất một chữ a
123a ; true
234aa ; true
123; false
6 . Dấu * (dấu sao); Cũng như dấu + nhưng có lặp hoặc không đều được

1
2
3
4
5
a* : lặp lại chữ a, có lặp a hay không đều đúng
 
123a ; true
234aa; true
123; true
7 . Dấu | (gạch đứng) ; Là phép hoặc trong RE, chẳng hạn A hoặc B
1
2
a|b // a hoặc b
a|b|c // a hoặc b hoặc c
8 . Dấu \ (gạc chéo) ; Khi \ đứng trước một kí tự bất kỳ thì kí tự đó dc RE hiểu là chính nó

Ví dụ dấu . (chấm) trong RE được hiểu là kí tự bất kỳ, khi có \ đứng trước thì RE hiểu là dấu chấm chứ ko phải là kí tự bất kỳ 

9 . [^a-zA-Z]: một ký tự không phải là a->z, A-Z
10 . [^0-9]: một ký tự không phải là số
11 . \d Cho phép chuữ số bất kỳ trong khoảng [0-9]

12 . \D Ngược lại với \d , cho phép các kí tự khác [0-9]

13 . \w Cho phép các kí tự từ a-z A-Z và 0-9, hay chính là [a-zA-Z0-9]

14 . {2, 5} ; Thể hiện độ dài kí tự cho phép trong khoảng từ 2-5
1
2
3
4
$str = "/^[a-z]{2,5}$/"; // cho phép a-z có độ dài từ 2-5
$str = "/^[a-z]{5}$/"; // cho phép a-z có độ dài 5 kí tự
$str = "/^[a-z]{2,}$/"; // từ 2 kí tự trở lên
$str = "/^[a-z]{,5}$/"; // nhỏ hơn 5 kí tự
15 . \s cho phép khoảng trắng

16 . \S không cho phép khoảng trắng


B. ÁP DỤNG


Một số hàm so sánh chuỗi trong Regular Expression

1. Hàm preg_match($rule, $str, $result)

- $rule là chuỗi RE do ta quy định
- $str là chuỗi cần so sánh
- $result là kết quả trả về

a. Kiểm tra xem một chuỗi có tồn tại hay không
1
2
3
4
5
6
<?php
if (preg_match("/ell/", "Hello World!", $matches)) {
  echo "Match was found <br />";
  echo $matches[0];
}
?>
- Kết quả : có tìm thấy chuỗi "ell" trong chuỗi "Hello World!"

b. Kiểm tra cụm từ có nằm ở đầu chuỗi hay không
1
2
3
4
5
6
7
8
<?php
$Rule = "/^Hell/";
if (preg_match($Rule, "Hello World!", $matches)) {
  echo "Cụm từ {$Rule} có xuất hiện ở đầu chuỗi";
}else{
 echo "Cụm từ {$Rule} không xuất hiện ở đầu chuỗi";
}
?>
- Kết quả : Cụm từ /^Hell/ có xuất hiện ở đầu chuỗi

c. Kiểm tra xem chuỗi có phải chữ số
  
Kiểm tra xem chuỗi có phải là chữ số và có từ 2 chữ số trở lên hay không
1
2
3
4
5
6
7
8
<?php
$Rule = "/^[0-9]{2,}$/";
if (preg_match($Rule, "Hkgf875565fg", $matches)) {
 echo "{$Rule} là chữ số và có hơn 2 chữ số";
}else{
 echo "{$Rule} không phải là chữ số";
}
?>
- Kết quả : /^[0-9]{2,}$/ không phải là chữ số

d. Kiểm tra password

Kiểm tra password thỏa mãn điều kiện: 
- Kí tự đầu tiên phải là chữ in hoa
- Các kí tự tiếp theo được phép từ a-z A-Z và 0-9
- Độ dài từ 6 - 8 kí tự
1
2
3
4
5
6
7
8
9
<?php
$Rule = "/^[A-Z]{1}[a-zA-Z0-9]{6,8}$/";
$Pass = "Hkg87hjj";
if (preg_match($Rule, $Pass, $matches)) {
    echo "{$Pass} thỏa mãn điều kiện";
}else{
    echo "{$Pass} không phải là password hợp lệ";
}
?>
- Kết quả : Hkg87hjj thỏa mãn điều kiện

e. Kiểm tra email đúng định dạng

- Emai phải bắt đầu bằng kí tự chữ cái a-z => [a-z]{1}
- Tiếp theo được phép các kí tự a-z, A-Z, 0-9 và giới hạn từ 3  - 50 kí tự => [a-zA-Z0-9]{3,50}
- Tiếp theo là dấu @ => \@
- Tiếp theo là miền (gmail, yahoo, domain...) từ 3 - 20 kí tự => [a-zA-Z0-9]{3,20}
- Mail thì phải có dấu chấm (.) => \.
- Cuối cùng là chấm gì  (.com, .net, .vn...) và từ 2 - 5 kí tự => [a-z,A-Z]{2,5}

1
2
3
4
5
6
7
8
$Rule = "/^[a-zA-Z]{1}[a-zA-Z0-9]{3,50}\@[a-zA-Z0-9]{3,20}\.[a-zA-Z]{2,5}$/";
$Myemail = "haanhdon@phpandmysql.net";
if (preg_match($Rule, $Myemail, $matches)) {
 echo "{$Myemail} là một email";
}else{
 echo "{$Myemail} không phải email";
}
?>
2. Hàm preg_replace, tìm kiếm và thay thế
Hàm preg_replace( pattern, replacement, subject)
Hàm preg_replace để tìm kiếm chuỗi và thay thế chuỗi theo một quy ước nào đó, ví dụ ở đây tôi muốn tìm những ngày có định dạng là dd-mm-YY và đổi thành dạng dd/mm/YY
1
echo preg_replace("/(\d+)-(\d+)-(\d+)/", "$1/$2/$3", "17-01-2014");

3. Hàm preg_split
Hàm preg_split dùng để cắt chuỗi trong Regular Expression
1
2
3
4
5
6
7
<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
echo "<pre>";
print_r( $chars );
echo "</pre>";
?>
- Kết quả 
1
2
3
4
5
6
7
8
9
Array
(
    [0] => s
    [1] => t
    [2] => r
    [3] => i
    [4] => n
    [5] => g
)

Hi, ban đầu mới học chắc ai cũng đau đầu với chuỗi kí tự loằng ngoằng này, mặc dù chưa đầy đủ lắm nhưng hi vọng giúp cho các bạn mới học nắm được phần nào về Regular Expression.
nguồn http://phpandmysql.net/
Read More