04/10/2018, 17:00

[BÀI 12] THAO TÁC VỚI CHUỖI TRONG PHP

Vì sao chúng ta cần xử lý chuỗi: Trong một trang web phần lớn dữ liệu được hiển thị ở dạng văn bản (hay dạng chuỗi), do vậy nếu không nắm rõ được hay không xử lý được chuỗi trong PHP là một khiếm khuyết lớn.Để gạt đi khiếm khuyết này, ngay dưới đây là một số hàm mà PHP đã dựng sẵn, đó là những ...

Vì sao chúng ta cần xử lý chuỗi:

Trong một trang web phần lớn dữ liệu được hiển thị ở dạng văn bản (hay dạng chuỗi), do vậy nếu không nắm rõ được hay không xử lý được chuỗi trong PHP là một khiếm khuyết lớn.Để gạt đi khiếm khuyết này, ngay dưới đây là một số hàm mà PHP đã dựng sẵn, đó là những hàm xử lý chuỗi thông dụng nhất mà chúng ta cần nắm được.

Nối chuỗi:

  • Các dạng mã hóa (hash code) hiện nay là sự cắt ghép từ nhiều thuật toán khác nhau, việc ghép nhiều chuỗi đã được mã hóa lại làm cho dữ liệu an toàn hơn, như là việc mã hóa mật khẩu, các dạng token,…
  • Trong trường hợp cần nối hai (hay nhiều chuỗi) lại với nhau chúng ta sử dụng dấu chấm ‘.’ để nối các chuỗi.
  • Ví dụ:

Ở ví dụ này: tôi đã nối 3 chuỗi lại với nhau bằng 2 dấu chấm, chuỗi đầu tiên là $chuoi1 , chuỗi thứ 2 là giấu cách =, và chuỗi thứ 3 là $chuoi2. Kết quả sẽ tạo nên được 1 câu hoàn chỉnh như ở trên.

Tìm độ dài của một chuỗi – hàm strlen()

  • Ứng dụng dễ quan sát nhất của hàm này là kiểm tra độ dài của mật khẩu. Vì lý do bảo mật, các lập trình viên thường yêu cầu mật khẩu đăng nhập không được quá ngắn. Thông thường độ dài tối thiểu được yêu cầu là 6 ký tự. Để làm được điều này, đơn giản chúng ta chỉ cần sử dụng hàm strlen()
  • Khi sử dụng hàm strlen() , kết quả trả về sẽ là tổng số ký tự có trong chuỗi vừa kiểm tra (bao gồm cả dấu cách – khoảng trắng)
  • Ví dụ:

Việc đếm số ký tự là tiếng Việt có dấu sẽ cho ra kết quả nhiều ký tự hơn so với các ký tự là tiếng Việt không dấu. Chẳng hạn:

Cùng nhìn lại và bạn sẽ thấy rằng, chữ â bạn đã gõ là “aa”, và chữ “ầ” bạn đã gõ là “aaf”, hàm strlen() đã đếm các ký tự này và cho ra kết quả khác nhau mặc dù bạn sẽ nhầm tưởng rằng a – â – ầ vẫn chỉ là 1 ký tự.

Tìm ký tự hoặc chuỗi trong chuỗi – hàm strpos()

Hàm này được sử dụng khi bạn muốn tìm trong chuỗi nào đó một từ (cụm từ hay ký tự nào đấy), khi chúng ta tìm kiếm trên google , google cũng đã làm điều tương tự. Và sử dụng hàm strpos() , bạn đã 1 bước gần đến với sự tìm kiếm thông minh giống google vậy.

  • Nếu tìm thấy các từ (ký tự,…) cần tìm kiếm trong chuỗi, hàm strpos() sẽ trả về vị trí đầu tiên xuất hiện của từ khóa cần tìm, ngược lại không trả về gì hết (null)
  • Ví dụ:

Khi tìm từ mùa xuân, bạn sẽ thắc mắc tại sao vị trí xuất hiện đầu tiên là vị trí thứ 7. Giống hàm strlen() ở trên, hàm strpos() cũng đếm các ký tự tiếng Việt có dấu (nhiều ký tự hơn các ký tự tiếng Việt không dấu), khi sử dụng hàm strpos() vị trí đầu tiên của chuỗi được đánh số là 0, do vậy chữ m trong mùa xuân ở vị trí thứ 7.

Hàm str_word_count($string , $format ,  $charlist) : đếm tổng số từ có trong chuỗi

  • string: chỉ định chuỗi để kiểm tra
  • format: chỉ định kiểu giá trị trả về của hàm str_word_count(). Các giá trị này có thể là:
    • 0 – Mặc định – trả về số lượng từ đếm được
    • 1 – Trả về một mảng chứa các từ trong chuỗi
    • 2 – Trả về một mảng với key là vị trí của từ trong chuỗi và value là từ trong chuỗi
  • charlist: chỉ định các ký tự đặc biệt sẽ được xem như một từ trong chuỗi

Một số hàm cơ bản khác:

Hàm strtoupper(string): đổi chữ thường thành hoa.
Hàm strtolower(string): đổi chữ hoa thành thường.
Hàm ucfirst(string): đổi chữ in ký tự đầu tiên của chuỗi.
Hàm ucwords(string): đổi chữ in ký tự đầu tiên của mỗi từ trong chuỗi.
Hàm trim($string, $character); Xóa ký tự $character nằm ở đầu và cuối chuỗi $str, nếu ta không nhập $character thì mặc định nó hiểu là xóa khoảng trắng.
Hàm ltrim($string, $character): Tương tự như trim nhưng chỉ xóa bên trái
Hàm rtrim($string, $character): Tương tự như trim nhưng chỉ xóa bên phải

Hàm tìm kiếm và thay thế chuỗi

Hàm substr( string $string , int $start [, int $length ] ): cắt ra một phần của chuỗi từ vị trí start một đoạn được chỉ định bằng tham số length

  • string: chuỗi nhập vào đẻ cắt ra chuỗi con
  • start: nếu start là một số dương, chuỗi được trả về sẽ bắt đầu từ vị trí start (ký tự đầu tiên của chuỗi được tính là 0). Nếu start là một số âm chuỗi con trả về sẽ được cắt từ vị trí start tính từ cuối chuỗi.
  • length: độ dài của chuỗi trả về. Mặc định length được tính đến cuối chuỗi
    • length>0: độ dài của chuỗi trả về được tính từ đầu chuỗi
    • length<0: độ dài của chuỗi trả về được tính từ cuối chuỗi

Hàm explode($delimiter, $string): chuyển một chuỗi thành một mảng các phần tử với ký tự tách mảng được xác định trước.

  • Trong đó: $delimiter là ký tự (chuỗi) dùng để tách mảng
  • $tring là chuỗi muốn tách
  • Ví dụ dưới đây sẽ dùng dấu cách (khoảng trắng) để tách 1 chuỗi thành 1 mảng

Hàm implode($delimiter, $piecesarray)

Ngược với hàm explode() , hàm implode() lại dùng để chuyển 1 mảng thành 1 chuỗi, chuỗi này được ngăn cách bằng ký tự được xác định trước

  • Trong đó: $delimiter là ký tự (chuỗi) để nối
  • $piecesarray là mảng muốn chuyển thành chuỗi

Ví dụ dưới đây sẽ chuyển lại mảng Array ( [0] => Đây [1] => là [2] => khóa [3] => học [4] => lập [5] => trình [6] => PHP [7] => cơ [8] => bản ) về thành 1 chuỗi được ngăn cách nhau bởi dấu cộng:

Hàm strstr( $string, $needle)

Tách một chuỗi bắt đầu từ $needle cho đến hết chuỗi $string

ord ( $string )

Hàm này trả về mã ASCII của ký tự đầu tiên trong chuỗi $string.

str_repeat(  $string,  $n  )

Hàm này sẽ lặp chuỗi $string n lần, trong đó $n là số nguyên dương, trong trường hợp bạn ghi $n <0 , sẽ xảy ra lỗi

Ví dụ tôi muốn in chữ xin chào 2 lần, tôi làm như sau:

str_replace( $chuoi_can_tim, $chuoi_thay_the, $chuoi_ban_dau )

Hàm này sẽ tìm kiếm và thay thế chuỗi giống như Ctrl+h vậy

Một số hàm mã hóa:

  • Hàm md5($chuoi_can_ma_hoa) : hàm này sẽ chuyển chuỗi ban đầu thành 1 chuỗi mới có 32 ký tự
  • Hàm sha1($chuoi_can_ma_hoa): cũng là mã hóa nhưng hàm này sẽ chuyển chuỗi ban đầu thành 1 chuỗi mới có 40 ký tự

htmlentities($str)

Hàm này sẽ in ra ký tự đặc biệt trong html

  • Thông thường các ký tự đặc biệt trong html sẽ không được in ra màn hình, do vậy để in được các ký tự này ra màn hình cần dùng đến hàm htmlentitis()

substr( $string,  $start, $length )

Hàm này sẽ cắt chuỗi cũ thành 1 chuỗi mới, trong đó:

  • $string : là chuỗi ban đầu
  • $start : là vị trí bắt đầu cắt
  • $length : số lượng ký tự cần cắt

Cần lưu ý: vị trí đầu tiên của chuỗi là vị trí 0

strstr( $string, $ky_tu_bat_dau )

Hàm này sẽ cắt chuỗi cũ thành 1 chuỗi mới từ vị trí bắt đầu đến hết chuỗi, trong đó:

  • $string là chuỗi ban đầu
  • $ky_tu_bat_dau là ký tự bắt đầu cắt
0