Khái niệm về chuỗi trong PHP
Kiểu string
gọi là chuỗi (hay xâu ký tự) đó là chuỗi các ký tự (biểu diễn nội dung văn bản - text):
ví dụ "Tôi học Php"
là một chuỗi trong PHP.
- KHÁI NIỆM VỀ CHUỖI
- KHAI BÁO CHUỖI
- ›› Biểu diễn chuỗi theo nháy đơn
- ›› Biểu diễn chuỗi theo nháy kép
- ›› Biểu diễn chuỗi bằng Heredoc
- ›› Biểu diễn chuỗi bằng Nowdoc
- PHÉP TOÁN - HÀM VỀ CHUỖI
- ›› Nối hai chuỗi
- ›› Hàm hay dùng
- VÀI ĐOẠN CODE VỀ CHUỖI
Khai báo chuỗi ký tự
Thường thì bạn có 4 cách để có được chuỗi ký tự trong PHP:
- Sử dụng cặp ký tự nháy đơn
''
- Sử dụng cặp ký tự nháy kép
""
- Sử dụng cú pháp heredoc
- Sử dụng cú pháp nowdoc
Biểu diễn chuỗi theo nháy đơn ''
Đây là cách đơn giản để có được chuỗi ký tự. Chuỗi là các ký tự nằm giữa cặp nháy đơn ''
.
Khi dùng kiểu này muốn chứa ký tự '
thì phải viết \'
,
muốn chứa \
thì viết \\
.
Ví dụ:
<?php $value = 'Abc'; echo 'đây là một chuỗi ký tự'; // đây là một chuỗi ký tự echo 'Chuỗi này có ký tự \' bên trong'; // Chuỗi này có ký tự ' bên trong echo 'Kiểu này không chèn biến $value vào chuỗi'; // Kiểu này không chèn biến $value vào chuỗi được ?>
Biểu diễn chuỗi theo nháy kép ""
Chuỗi là các ký tự nằm giữa cặp nháy kép ""
.
Khi dùng cách tạo chuỗi này PHP sẽ tự động chuyển ký hiệu một số ký tự đặc biệt.
Ví dụ: \n
là LF - dòng mới
,
\r
là CR - đầu dòng
,
\t
là ký tự tab
,
\$
là ký tự $
,
\"
là ký tự "
,
\\
là ký tự \
...
Điều đặc biệt của chuỗi trong dấu "" là nó tự động chèn giá trị của biến chứa bên trong khai báo chuỗi.
<?php $doing = 'learning PHP'; echo "I am $doing"; ?>
Chạy code trên sẽ in ra kết quả: "I am learning PHP"
Biểu diễn chuỗi theo Heredoc
Nếu hai cách trên vẫn thấy gò bó trong việc sử dụng chuỗi thì bạn có thể tham khảo Heredoc, nó vẫn tận dụng được cách dùng "" tự chèn giá trị biến nhưng thoải mái hơn khi sử dụng các ký tự đặc biệt.
Heredoc bao giờ cũng bắt đầu bằng <<<
, tiếp theo là một tên
định danh
do bạn đặt rồi phải xuống dòng ngay,
và cuối cùng phải kết thúc bằng định danh;
ở một dòng mới.
Ví dụ sau tôi chọn định danh có tên là CONMEO
:
<?php $congi = 'mèo'; $caygi = 'cau'; $str = <<<CONMEO Con $congi mà trèo cây $caygi, Hỏi thăm chú chuột đi đâu vắng nhà. Chú chuột đi chợ đường xa. Mua mắm mua muối giỗ cha chú $congi. CONMEO; echo $str; ?> Kết quả: Con mèo mà trèo cây cau, Hỏi thăm chú chuột đi đâu vắng nhà. Chú chuột đi chợ đường xa. Mua mắm mua muối giỗ cha chú mèo.
Biểu diễn chuỗi theo Nowdoc
Cách này khá giông với Heredoc, nhưng bắt đầu bằng <<<'Định-Danh'
(có cặp ''
- heredoc thì không có). Nowdoc vẫn cho phép viết trực tiếp các ký tự đặc biệt nhưng
sẽ không phân tích biến đề chèn vào chuỗi.
Trở lại bài thơ trên nếu dùng nowdoc:
<?php $congi = 'mèo'; $caygi = 'cau'; $str = <<<'CONMEO' Con $congi mà trèo cây $caygi, Hỏi thăm chú chuột đi đâu vắng nhà. Chú chuột đi chợ đường xa. Mua mắm mua muối giỗ cha chú $congi. CONMEO; echo $str; ?> Kết quả: Con $congi mà trèo cây $caygi, Hỏi thăm chú chuột đi đâu vắng nhà. Chú chuột đi chợ đường xa. Mua mắm mua muối giỗ cha chú $congi.
CÁC PHÉP TOÁN VÀ HÀM VỀ CHUỖI TRONG PHP
Có khả nhiều hàm xây dựng sẵn của PHP về chuỗi, bạn tham khảo thêm ở đây STRING. Sau đây chỉ đề cập vài hàm hay dùng:
Nối các chuỗi ký tự trong PHP
Để nối các chuỗi lại với nhau sử dụng toán tử nối .
nhớ là dấu chấm chứ không phải +
Ví dụ:
<? $str1 = 'I'; $str2 = 'PHP'; $str3 = $str1.' learn '.$str2; echo $str3; ?> //OUT: I learn PHP
Hàm hay dùng về chuỗi trong PHP
Hàm | Ví dụ |
---|---|
strlen(string $string)
mb_strlen(string $str, $encoding) |
Lấy chiều dài chuỗi. mb_strlen dùng dạng nhiều byte như Unicode
$str = 'Chào'; echo strlen($str); //OUT: 5 echo mb_strlen($str); //OUT: 4 |
str_word_count |
Đếm số từ trong chuỗi (từ chứ không phải chữ).
$str = 'Hello World PHP!'; echo str_word_count($str); //OUT: 3 |
strrev(string $string) |
Đào ngược chữ từ cuối lênh đầu.
$words = array( 'desserts', 'live', 'knits', 'sports', 'pupils', 'raw', 'smart', 'snug', 'lived', 'god', 'time', 'deliver', 'star'); foreach ($words as $word) echo $word.' - '.strrev($word).PHP_EOL; //OUT: desserts - stressed live - evil knits - stink sports - strops pupils - slipup raw - war smart - trams snug - guns lived - devil god - dog time - emit deliver - reviled star - rats |
strpos($string, $substring) |
Kiểm tra xem chuỗi $string có chứa chuỗi $substring. Nếu có thì trả về giá trị vị trí đầu tiên bắt gặp.
nếu là FALSE thì không thấy. Ví dụ kiểm tra xem có chứa chuỗi:
if (strpos($str, $str_search) !== false) { //Có chứa } |
str_replace($str_search, $str_rep, $str) |
Tìm và thay thế chuỗi.
echo str_replace( "Learing", "Welcome, Learing", "Learing PHP!"); //OUT: Welcome, Learing PHP! |
str_repeat($str, $multiplier) |
Tạo ra chuỗi bằng cách gép $str thành $multiplier lần.
$str = '*'; for ($i=1; $i<=10; $i++) echo str_repeat($str, $i).PHP_EOL; //OUT: * ** *** **** ***** ****** ******* ******** ********* ********** |
strtolower($string) |
Chuyển chuỗi thành chữ thường
$str = 'Hello World!'; echo strtolower($str); //OUT: hello world! |
strtoupper($string) |
Chuyển chuỗi thành chữ in.
$str = 'Hello World!'; echo strtoupper($str); //OUT: HELLO WORLD! |
strtr($str, $from, $to)
|
Tìm và thay thế ký tự trong chuỗi, thay từng byte nên khá nhanh
$str = 'Learn PHP!'; echo strtr($str,'LP','lp'); //OUT: learn pHp! |
strtr($str, array $replace_pairs)
|
Tìm và thay thế ký tự trong chuỗi. (Dùng cách này convert tiếng việt không dấu)
$str = 'Lập bà lập bập!'; $ar = array('ậ'=>'a', 'à'=>'a'); echo strtr($str, $ar); //OUT: Lap ba lap bap! |
substr($string, $start ,$length)
|
Trích xuất chuỗi, bắt đầu từ vị trí $start với chiều dài $length, nếu không có $length sẽ trích xuất đến hết chuỗi.
Nếu chuỗi UNICODE (nhiều byte một ký tự) có thể dùng mb_substr với tham số tương tự.
$str = 'Lap ba lap bap!'; echo mb_substr($str, 7); //OUT: lap bap! $str = 'Lập bà lập bập!'; echo mb_substr($str, 7); //OUT: lập bập! |
trim
|
Loại bỏ khoảng trắng của chuỗi. |
is_string($var)
|
Kiểm tra xem $var có phải là chuỗi.
|
empty($var)
|
Nếu chuỗi rỗng trả về true. Chuỗi rỗng như "" , null , '0'
|
VÀI ĐOẠN CODE VỀ CHUỖI
Ngắt chuỗi thành chuỗi ngắn hơn
Ví dụ, mẩu tin dài, chỉ giữ lại 20 từ đầu tiên và dấu ...
function truncateString($str, $maxChars = 40, $holder = "...") { if (strlen($str) > $maxChars) { return trim(substr($str, 0, $maxChars)) . $holder; } else { return $str; } }