Thao tác với chuỗi (String) trong PHP là một kỹ năng cực kỳ quan trọng khi lập trình web với PHP.
Hôm nay mình sẽ hướng dẫn bạn cách sử dụng 12 hàm thao tác với chuỗi thường gặp nhất trong PHP thông qua ví dụ cụ thể.
Ví dụ về các hàm thao tác với chuỗi trong PHP
1. Một chuỗi là gì? What is a String?
Một chuỗi là một tập hợp các ký tự. Chuỗi là một trong số các kiểu dữ liệu (data types) được PHP hỗ trợ.
Chuỗi bao gồm cả ký tự và số. Chuỗi được tạo ra khi:
-
Bạn khai báo chuỗi và gán vào đó một chuỗi
-
Bạn có thể trực tiếp sử dụng chuỗi với echo.
Chuỗi là ngôn ngữ kiến trúc. Nó giúp hình thành từ ngữ.
Học làm thế nào làm việc với chuỗi trọng PHP và điều khiển chúng sẽ giúp bạn lập trình tốt hơn.
2. Ví dụ về cách tạo một chuỗi trong PHP
Bây giờ hãy xem 4 cách khác nhau để tạo ra một chuỗi.
Tạo chuỗi bằng cách sử dụng dấu nháy đơn ' ' (Đây là cách đơn giản nhất để tạo ra một chuỗi)
Hãy nhìn vào ví dụ tạo chuỗi bằng cách sử dụng dấu nháy đơn trong PHP dưới đây:
Kết quả chúng ta nhận được sẽ là:
Nếu dấu nháy đơn hoặc trong chuỗi có ký tự đặc biệt nào đó cần hiển thị. Ta sử dụng dấu \ trước ký tự đó như ví dụ bên dưới:
Kết quả chúng ta nhận được:
3. Tạo Chuỗi sử dụng dấu nháy đôi trong PHP
Cặp dấu nháy đôi " " được sử dụng để tạo ra chuỗi tương đối phức tạp hơn so với dấu nháy đơn ' '.
Tên biến có thể được sử dụng trong đó và và giá trị của biến sẽ được hiển thị.
Hãy thử xem một ví dụ:
Giải thích một chút về chương trình:
-
Bạn ta tạo một biến $name có giá trị là NIIT - ICT Hà Nộiến
-
Biến $name sau đó được đặt vào trong câu lệnh echo (sử dụng dấu nháy đôi)
-
Giá trị của biến $name sẽ được nội suy trong quá trình chạy chương trình.
Kết quả chúng ta nhận được như sau:
Chính vì nó sẽ được nội suy nên nếu chúng ta đặt ký tự \n thì tại điểm đó chuỗi xuất ra sẽ tự động xuống dòng.
Hoặc \\ để thêm dấu \ khi chương trình xuất chuỗi ra.
Nếu không sử dụng dấu \ trước các ký tự đặc biệt thì chương trình sẽ ném cho chúng ta một lỗi, ví dụ:
Đây là bởi vì khi thực thi, chương trình đã coi như $word là một biến. Và biến $word chúng ta chưa khai báo nên dẫn tới lỗi trong quá trình chạy.
Nếu chúng ta muốn sử dụng dấu $ như là một ký tự và muốn xuất nó ra thì chúng ta sử dụng dấu \ ngay trước ký tự $ như ví dụ dưới đây:
Kết quả chúng ta nhận được là:
Như bạn thấy, mặc dù chúng ta đã khai báo và khởi tạo biến $word nhưng chương trình đã hiểu đúng là chúng ta cần xuất ký tự $ ra màn hình.
4. PHP Heredoc
Phương pháp heredoc được sử dụng để tạo ra chuỗi khá phức tạp so với dấu nháy đơn (hoặc nháy đôi).
Các heredoc hỗ trợ tất cả các đặc tính của nháy đôi và cho phép tạo chuỗi giá trị nhiều hơn một dòng mà không cần nối chuỗi.
Sử dụng dấu nháy đôi để tạo chuỗi trên nhiều dòng sẽ tạo ra một lỗi.
Nếu sử dụng Heredoc thì bạn có thể sử dụng cả dấu nháy đôi trong đó luôn.
Ví dụ dưới đây mô tả cách Heredoc được sử dụng để tạo ra chuỗi.
<<<EOT là ký hiệu qui ước.
EOT; là thông báo cho chương trình kết thúc chuỗi.
Giống như thẻ mở và thẻ đóng vậy. Bạn có thể đặt bất kỳ thứ gì bạn thích ở trong này.
5. PHP Nowdoc
Các Nowdoc tạo ra phương pháp tương tự như là heredoc nhưng hoạt động như cách dấu nháy đơn làm việc.
Nội suy không diễn ra bên trong Nowdoc.
Nowdoc là lý tưởng khi làm việc với dữ liệu thô không cần phải được phân tích.
Ví dụ dưới đây sẽ cho bạn thấy cách Nowdoc hoạt động:
Chúng ta nhận được kết quả:
6. Ví dụ về 12 hàm thao tác với chuỗi thường gặp nhất trong PHP
PHP đã tạo ra các hàm có sẵn để sử dụng thao tác với chuỗi.
Bây giờ chúng ta sẽ đi vào xem ví dụ về các hàm thao tác với chuỗi thường gặp nhất.
6.1. Ví dụ về hàm strtolower trong PHP
Hàm strtolower() sử dụng để chuyển đổi tất cả các ký tự trong chuỗi thành ký tự viết thường:
6.2. Hàm strtoupper
Sử dụng để chuyển đổi tất cả các ký tự từ chữ thường sang chữ Hoa
6.3. Hàm strlen
Hàm strlen sử dụng để tính số lượng ký tự có trong chuỗi. Khoảng trắng cũng được tính luôn.
6.5. Hàm substr
Hàm substr sử dụng để trả lại một phần của một chuỗi.
Hàm substr chấp nhận 3 tham số.
-
Tham số đầu tiên chuỗi truyền vào
-
Tham số thứ hai là vị trí của điểm bắt đầu
-
Tham số thứ ba số là số ký tự tính từ điểm bắt đầu cần lấy
6.6. Hàm str_replace
Hàm str_replace sử dụng để xác định vị trí và thay thế chuỗi trong một chuỗi khác.
Hàm str_replace sử dụng 3 tham số:
-
Đầu tiên, chuỗi cần phải thay thế ra
-
Thứ hai là chuỗi cần thay thế vào
-
Thứ ba đoạn văn bản.
Code ví dụ:
6.7. Ví dụ về Hàm strpos trong PHP
Hàm strpos sử dụng để xác định vị trí bắt đầu của một chuỗi trong một chuỗi khác.
Giá trị trả về của hàm strpos: Vị trí xuất hiện đầu tiên của một chuỗi bên trong một chuỗi khác hoặc FALSE nếu không tìm thấy chuỗi.
Lưu ý: Vị trí chuỗi bắt đầu từ 0 chứ không phải 1.
Cú pháp hàm strpos():
strpos(string,find,start)
-
string: chuỗi nhỏ cần tìm kiếm vị trí đầu tiên của nó
-
find: Chuỗi lớn mà có thể chứa chuỗi cần tìm
-
start: Đây là một tùy chọn, chị định vị trí bắt đầu tìm kiếm
Code ví dụ về hàm strpos trong PHP:
Ở ví dụ trên thì bạn biết được một chuỗi nằm trong một chuỗi khác bắt đầu từ vị trí bao nhiêu.
Tuy nhiên, Để sử dụng kết quả này chúng ta cũng cần lưu ý một chút, để hiểu rõ hơn strpos hãy đi vào ví dụ:
Lưu ý rằng việc sử dụng điều kiện !== false là có chủ ý vì:
Hàm strpose() trả về giá trị chuỗi con bắt đầu trong chuỗi lớn hoặc giá trị boolean false nếu không tìm thấy.
Vì vị trí đầu tiên sẽ trong chuỗi là 0 và vị trí 0 vẫn hợp lệ, hơn nữa 0 là falsy value, nên chúng ta không thể sử dụng các cấu trúc đơn giản hơn như là !Strpose ($ a, 'là') hay là !=.
Nếu bạn sử dụng != false thì kết quả sẽ bị sai, ví dụ:
Lưu ý là Hàm strpos trong PHP có phân biệt hoa thường nên khi so sánh phải lưu ý, nếu không bạn cũng sẽ nhận được kết quả không mong muốn.
Khi kiểm tra bạn cũng cần lưu ý thêm một điều, ví dụ:
Chuỗi 'là' có trong 'Bạn tên là gì?' nhưng cũng có trong chuỗi 'Bạn ở làng nào?'
Để kiểm tra riêng biệt một từ riêng biệt thì mình khuyên bạn nên truyền thêm dấu cách, ví dụ như ' là '
Một số hàm liên quan với hàm strpos() trong PHP:
-
Hàm stripos() - Tìm vị trí xuất hiện đầu tiên của chuỗi bên trong chuỗi khác (không phân biệt chữ hoa chữ thường)
-
Hàm strrpose() - Tìm vị trí của lần xuất hiện cuối cùng của chuỗi bên trong chuỗi khác (phân biệt chữ hoa chữ thường)
-
Hàm strripos() - Tìm vị trí xuất hiện cuối cùng của một chuỗi bên trong một chuỗi khác (không phân biệt chữ hoa chữ thường)
Cách sử dụng các hàm này cũng tương tự hàm strpos nhưng với mục đích khác nhau đã được PHP cung cấp sẵn.
Bạn cũng có thể sử dụng Biểu thức chính quy để xác định xem một chuỗi có tồn tại trong chuỗi khác hay không.
>>> Xem ngay bài Biểu thức chính quy trong PHP
Tuy nhiên, về hiệu năng thì bài toán sử dụng 1 triệu so sánh cùng một lúc, hàm preg_match sử dụng biểu thức chính quy mất 1.5s trong khi hàm strpos chỉ mất khoảng 0.5s.
Còn về mặt kỹ thuật, câu hỏi hỏi "Làm thế nào để tìm các từ" không phải là một chuỗi con. Thì biểu thức chính quy có thể sẽ hữu ích hơn.
6.8. Hàm sha1
Hàm sha1 sử dụng để băm một chuỗi sang SHA-1
Code ví dụ:
6.9. Hàm md5
Hàm md5 được sử dụng để băm một chuỗi sang chuẩn md5
6.10. Hàm str_word_count
Hàm str_word_count được sử dụng để đếm các từ có trong một chuỗi.
Code ví dụ:
6.11. Hàm ucfirst
Hàm ucfirst được sử dụng để chuyển chữ cái đầu tiên của mỗi từ thành chữ Hoa.
Code ví dụ:
6.12. Hàm lcfirst
Hàm lcfirst được sử dụng để biến chữ cái đầu của chuỗi thành chữ thường.
Code ví dụ:
Bạn có thể tìm hiểu kỹ hơn về tất cả các hàm thao tác với chuỗi đã được PHP cung cấp sẵn tại đây: PHP String Functions
Tổng kết
Như vậy, qua bài này các bạn đã biết 4 cách tạo chuỗi trong PHP và tìm hiểu 12 hàm thao tác với chuỗi thường gặp nhất trong PHP
Hãy thử tìm hiểu thêm các hàm thao tác với chuỗi trong PHP trong tài liệu chuẩn của PHP.NET. Bạn có thể sẽ tìm thấy nhiều giải pháp bất ngờ mà bạn chưa từng nghĩ là chúng đã được dựng sẵn.
>>> Tham gia ngay khóa học Lập trình Web với PHP tại NIIT - ICT Hà Nội để học từ cơ bản đến nâng vào về Web PHP.