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.

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ụ: \nLF - dòng mới, \rCR - đầu dòng, \tký tự tab, \$ký tự $, \"ký tự ", \\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;
    }
}

Đăng ký nhận bài viết mới