[PHP&MySQL] Bài 12: Chuỗi và các hàm xử lý chuỗi trong PHP

Chuỗi là một trong những kiểu dữ liệu phổ biến trong các ngôn ngữ lập trình. Chuỗi bao gồm các ký tự số, chữ cái và các ký tự khác …

Chuỗi được đặt trong cặp dấu ngoặc kép (” “) hoặc cặp dấu nháy đơn (‘ ‘)

   $bien_chuoi = "name";
   $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);

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ể.

Không có giới hạn về độ dài của chuỗi, có thể dài tùy ý nếu bộ nhớ cho phép.

Các chuỗi được giới hạn bởi các dấu nháy kép được PHP xử lý bằng 2 cách sau đây:

  • Các chuỗi kí tự bắt đầu với (\) được thay thế với một kí tự đặc biệt
  • Các biến (bắt đầu với $) được thay thế bằng biểu diễn chuỗi của giá trị của nó.

Các quy tắc thay thế:

  • \n được thay thế bằng ký tự newline (dòng mới)
  • \r được thay thế bởi ký tự carriage-return, được hiểu là đưa con trỏ về đầu dòng nhưng không xuống dòng.
  • \t được thay thế bởi ký tự tab
  • \$ được thay thế bằng một dấu $
  • \” được thay thế bằng một dấu nháy kép “
  • \\ được thay thế bằng một dấu nháy đơn \

Việc  xử lý chuỗi trong PHP rất là quan trọng vì dữ liệu hiển thị trên trang web luôn luôn ở dạng chuỗi, vì thế nếu bạn nắm vững và xử lý nhuần nhuyễn thì sẽ giúp bạn ít tốn công sức và thời gian hơn mà web chạy lại nhanh nữa.

Dưới đây là một số quy tắc về chuỗi và các hàm xử lý chuỗi cơ bản. Các bạn có thể tìm thêm các hàm xử lý trên php.net

1. Quy tắc trong chuỗi

Nếu chuỗi được đặt trong dấu nháy kép "" thì các ký tự nháy kép " bên trong chuỗi phải thêm dấu gạch chéo đằng trước nó.

Ví dụ:

echo "Nam nói\"Cậu ấy đang ăn tối\" ";

Nếu chuối được đặt trong dấu nháy kép thì trong chuỗi ta có thể truyền biến vào mà không cần dùng phép nối chuỗi.

Ví dụ:

$str = "đang ăn tối";
echo "Nam nói\"Cậu ấy $str\" ";

Nếu chuỗi được đặt trong dấu nháy đơn '' thì các ký tự nháy đơn ' bên trong chuỗi phải thêm dấu gạch chéo đằng trước nó.

Ví dụ:

echo 'Học PHP online';

2. Các hàm xử lý chuỗi hay sử dụng

Sau đây là các hàm chúng ta hay sử dụng để xử lý chuỗi trong PHP.

addcslashes ($str, $char_list)

Hàm này sẽ thêm dấu gạch chéo (\) đằng trước những ký tự trong chuỗi $str mà ta liệt kê ở $char_list.

// a..z là gồm các từ từ a => z
echo (addcslashes('traodoithongtin.com', 'a..z'));
// kết quả: \t\r\a\o\d\o\i\t\h\o\n\g\t\i\n.\c\m\o

addslashes ( $str )

Hàm này sẽ thêm dấu gách chéo trước những ký tự (‘, “, \) trong chuỗi $str.

echo addslashes ("traodoithongtin.com's website learning PHP online");
// Kết quả là traodoithongtin.com's  website learning PHP online

stripslashes ($str)

Hàm này ngược với hàm addslashes, nó xóa các ký tự \ trong chuỗi $str.

echo stripslashes("Mot so ham 'xu ly chuoi' trong PHP");
// Kết quả Mot so ham 'xu ly chuoi' trong PHP

crc32 ( $str )

Hàm này sẽ chuyển chuỗi $str thành một dãy số nguyên (có thể âm hoặc dương tùy theo hệ điều hành).

echo crc32 ('traodoithongtin.com');
// kết quả: 913040009

explode ( $delimiter , $string)

Hàm này sẽ chuyển một chuỗi $string thành một mảng các phần tử với ký tự tách mảng là $delimiter.

 

<strong>// Chuỗi cần chuyển<br />
$str = 'traodoithongtin.com is a website free for you';
  
// Mỗi khoảng trắng sẽ là một phần tử trong mảng<br />
var_dump(explode(' ', $str));
  
/*Kết quả
array
    0 => 'traodoithongtin.com',
    1 => 'is',
    2 => 'a' ,
    3 => 'website',
    4 => 'free',
    5 => 'for' ,
    6 => 'you' */</strong>

implode($delimiter, $piecesarray);

Hàm này ngược với hàm explode, nó chuyển một mảng $piecesarray thành chuỗi và mỗi phần tử cách nhau bởi chuỗi $delimiter

echo implode(' ', array(
    'traodoithongtin.com',
    'xin',
    'chào',
    'các',
    'bạn'
));
// kêt quả là traodoithongtin.com xin chào các bạn

ord ( $string )

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

echo ord ('Ab');
// kết quả: 65

strlen($string)

Hàm này đếm số ký tự của chuỗi $string.

echo strlen('traodoithongtin.com');
// kết quả: 19

str_word_count($str)

Hàm này trả về số từ trong chuỗi $str.

echo str_word_count('traodoithongtin.com xin chào các bạn');
// kết quả là 5

str_repeat(  $str,  int $n  )

Hàm này lặp chuỗi $str $n lần.

echo str_repeat( 'Hello', 5 );
// Kết quả là HelloHelloHelloHelloHello

str_replace( $chuoi_tim, $chuoi_thay_the, $chuoi_nguon )

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

$str = 'TDTT xin chào các bạn';
$str = str_replace( 'TDTT', 'traodoithongtin.com', $str );
echo $str; // kết quả là traodoithongtin.com xin chào các bạn

md5( $str)

Hàm này mã hóa chuỗi thành một dãy 32 ký tự (mã hóa md5).

echo md5('traodoithongtin.com');
// Kết quả: 6289f04f6b3807482aea9d358ac8dd6d

sha1($string)

Hàm này mã hóa chuỗi thành một dãy 40 ký tự (mã hóa sha1)

echo sha1('traodoithongtin.com');
// kết quả 6289f04f6b3807482aea9d358ac8dd6d

htmlentities($str)

Hàm này chuyển các thể html trong chuỗi $str sang  dạng thực thể của chúng (html sẽ ko còn tác dụng nên bạn có thể echo ra bên ngoài).

echo htmlentities('<b>traodoithongtin.com</b>');
// Kết quả <b>traodoithongtin.com</b>

html_entity_decode($string)

Ngược lại với htmlentities, hàm này chuyển ngược các ký tự dạng thực thể HTML sang dạng ký tự của chúng.

$str = htmlentities('<b>traodoithongtin.com</b>');
  
echo 'Entity: ' . $str . '<br/>';
echo 'Decode: ' . html_entity_decode($str);

htmlspecialchars( $string)

Tương tự như htmlentities.

htmlspecialchars_decode($string)

Tương tự như html_entity_decode.

strip_tags( $string, $allow_tags )

Hàm này bỏ các thẻ html trong chuỗi $string được khai báo ở $allow_tags.

echo strip_tags('<b>traodoithongtin.com</b>', 'b');

substr( $string,  $start, $length )

Hàm này lấy một chuỗi con nằm trong chuỗi $str bắt đầu từ ký tự thứ $start và chiều dài $length.

echo substr( 'traodoithongtin.com',  0, 8);
// Kết quả traodoit

strstr( $string, $ky_tu_cho_truoc )

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

echo strstr('traodoithongtin.com xin chào', 'xin');
// Kết quả: xin chào

strpos($str, $chuoi_tim )

Tìm vị trí của chuỗi $chuoi_tim trong chuỗi $str, kết quả trả về false nếu không tìm thấy.

echo strpos('traodoithongtin.com chào các bạn', 'chào');
// kết quả 20

strtolower($str);

Chuyển tất cả các ký tự chuỗi $str sang chữ thường

strtoupper($string );

Chuyển tất cả các ký tự chuỗi $str sang chữ hoa

ucfirst( $string )

Chuyển ký tự đầu tiên chuỗi $string sang chữ hoa

ucfirst( $string )

Chuyển ký tự đầu tiên trong chuỗi $string sang chữ thường

ucwords( $string )

Chuyên từ đầu tiên trong chuỗi $string sang chữ hoa

trim($string, $ky_tu);

Xóa ký tự $ky_tu nằm ở đầu và cuối chuỗi $str, nếu ta không nhập $ky_tu thì mặc định nó hiểu là xóa khoảng trắng.

echo trim(' traodoithongtin.com ');
// kết quả: 'traodoithongtin.com'

ltrim($string, $ky_tu);

Tương tự như trim nhưng chỉ xóa bên trái

rtrim($string, $ky_tu)

Tương tự như trim nhưng chỉ xóa bên phải

nl2br($string)

Chuyển các ký tự xuống dòng “\n” thành thẻ

json_decode($json, $is_array)

Dùng để chuyển chuỗi dạng JSON sang các đối tượng mảng hoặc object. Nếu $is_array có giá trị false thì hàm sẽ chuyển một chuỗi $json thành một Class (object),  ngược lại nếu $is_array có giá trị true thì sẽ chuyển chuỗi $json thành một mảng.

json_encode($array_or_object)

Chuyển một mảng hoặc mội đối tượng (classs) sang chuỗi dạng JSON

Lời kết

Trên đây là các kiến thức cơ bản về chuỗi cùng với các hàm để xử lý chuỗi. Trong thực tế, không phải lúc nào cũng sử dụng hết các hàm này. Nhưng nếu chúng ta có kiến thức tốt về nó, sẽ rất dễ dàng linh hoạt để xử lý các tình huống xử lý chuỗi phức tạp. Chúc các bạn thành công.

Bình luận