[Bài đọc] Chuỗi (String)
NỘI DUNG BÀI VIẾT
Việc xử lý chuỗi trong lập trình PHP rất quan trọng vì dữ liệu để hiển thị trên trang web đa phần là ở dạng chuỗi. Vì thế việc hiểu và nắm vững kiến thức trong xử lý chuỗi sẽ giúp bạn tối ưu hóa hiệu suất của website và đẩy nhanh tiến độ thiết kế website.
Chuỗi là gì?
Chuỗi là một kiểu dữ liệu cơ bản trong PHP. Chuỗi là dãy liên tiếp các ký tự. Chuỗi mà không chứa ký tự thì được gọi là chuỗi rỗng.
Chuỗi được bao quanh bởi dấu nháy đơn (‘ ‘) hoặc dấu nháy kép (” “). Sau đây là một vài ví dụ về chuỗi hợp lệ trong PHP:
<?php $string_1 = "Đay la vi du mot chuoi trong PHP"; $string_2 = "B"; $string_3 = 'Chuoi su dung dau nhay don'; $string_0 = ""; // ví dụ một chuỗi không có ký tự nào ?>
Lưu ý:
1. Chuỗi nằm trong dấu nháy đơn có thể chứa các dấu nháy kép. Tương tự, một chuỗi nằm trong dấu nháy kép, như ví dụ trên có thể chứa các dấu nháy đơn. Vì vậy, nếu chuỗi được bao quanh bới một loại dấu nháy, bạn có thể sử dụng dấu nháy khác bên trong nó. Sau đây là một số ví dụ:
‘Bò kêu “moo”’
‘Đồng hồ thông báo “12h trưa”’
“ ‘Ai cũng có khoảng thời gian tuyệt với’ là khẩu hiệu chính thức.”
2. Hai dấu dùng để đặt xung quanh chuỗi phải cùng một loại, nếu khác loại sẽ dẫn đến sai cú pháp làm chương trình bị lỗi.
$a = “CodeGym’; //SAI
$b = ‘CodeGym”; //SAI
3. Khi sử dụng chuỗi với dấu nháy đơn, nó sẽ được đối xử như là các hằng, và in ra chính chuỗi đó. Trong khi sử dụng với dấu nháy kép, nó thay thế các biến với giá trị của chúng cũng như thông dịch các dãy ký tự cụ thể.
<?php $bien_chuoi = "name"; print($bien_chuoi); print "<br />"; $bien_chuoi_hang = 'Chuỗi $bien_chuoi sẽ không được in!\\n'; print($bien_chuoi_hang); print "<br />"; $bien_chuoi_hang = "Chuỗi $bien_chuoi sẽ được in!\\n"; print($bien_chuoi_hang); ?>
Kết quả khi chạy ví dụ trên:
nameChuỗi $bien_chuoi sẽ không được in!\nChuỗi name sẽ được in!\n
Khai báo chuỗi
<?php
$x = "Hello world!";
$y = 'Hello world!';
echo $x;
echo "<br>";
echo $y;
?>
Toán tử nối chuỗi
Trong PHP để nối hai hay nhiều chuỗi chúng ta sử dụng toán tử chấm (.)
Ví dụ:
“Code”.”Gym” => “CodeGym”
“Gia tri cua x: “.10 => “Gia tri cua x: 10”
“Gia tri của x: “.$x.” va Gia tri cua y: “.$y
<?php $x = 10;$y = 20; echo $x;echo "<br>"; echo $y;echo "<br>"; echo "Gia tri cua x: ".$x." va Gia tri cua y: $y";?>
Kết quả khi chạy ví dụ trên:
1020Gia tri cua x: 10 va Gia tri cua y: 20
Các ký tự đặc biệt
Ký tự đặc biệt là những ký tự mà khi nó được viết vào bên trong một chuỗi sẽ có nguy cơ làm ảnh hưởng đến cú pháp của chuỗi, khiến câu lệnh bị lỗi.
Dưới đây là ví dụ minh họa phân tích cho bạn thấy tại sao.
<?php $a = "Cac ban tham khao them tai lieu: "Hoc lap trinh PHP"";echo $a;?>
Khi chạy ví dụ trên bị lỗi vì ký tự nháy kép (“”) bị nhầm lẫn với ký tự ký hiệu chuỗi.
Chúng ta có một giải pháp để có thể viết được ký tự đặc biệt trong chuỗi, đó chính là đặt dấu gạch chéo ngược phía trước ký tự đặc biệt.
<?php$a = "Cac ban tham khao them tai lieu: \"Hoc lap trinh PHP\"";echo $a;?>
Kết quả hiển thị của ví dụ trên:
Cac ban tham khao them tai lieu: "Hoc lap trinh PHP"
Dưới đây là ba ký tự đặc biệt thường được sử dụng nhất trong chuỗi:
Ký tự đặc biệt | Cách viết trong chuỗi |
“ | \” |
‘ | \’ |
\ | \\ |
Ngoài ra có các ký tự đặc biệt được sử dụng hỗ trợ trong quá trình hiển thị chuỗi. Các ký tự và ý nghĩa như sau:
Ký tự đặc biệt | Viết tắt | Ý nghĩa |
\n | new line | Xuống dòng |
\t | tab | Tab |
\r | carriage-return | Đưa con trỏ về đầu dòng nhưng không xuống dòng |
Chỉ số của ký tự trong chuỗi
Chuỗi được coi như là mảng của các ký tự. Vì vậy các ký tự trong chuỗi có thể được thao tác như thao tác với các phần tử trong một mảng chứa tập các ký tự. Chỉ số của mảng xuất phát từ 0 dành cho vị trí ký tự đầu tiên trong chuỗi.
Chuỗi | C | o | d | e | G | y | m |
Chỉ số | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
Vị trí | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Như vi dụ sau đây:
<?php$a = "CodeGym";for($i=0;$i<strlen($a);$i++){echo $a[$i]."<br/>";}?>
Kết quả hiển thị:
CodeGym
Trong ví dụ trên có sử dụng hàm strlen để lấy chiều dài của chuỗi trong PHP. Chúng ta sẽ cùng tìm hiểu loạt các hàm thao tác với chuỗi ở bài sau.
Leave a Reply