Chuỗi và các hàm xử lý chuỗi trong php


tự học php cơ bản 23/06/2015 Cùng chuyên mục

Giới thiệu chuỗi trong php, các thao tác - các hàm xử lý chuỗi cơ bản như tìm kiếm, cắt, thay thế, tính chiều dài, làm thành chữ in hoa - in thường (xử lý chuỗi)...

Chuỗi trong php:

Chuỗi (string) trong PHP là một dãy các ký tự asscii. Khác với C,..., chuỗi trong php không có ký tự kết thúc. Chiều dài của chuỗi (hay còn gọi là số lượng ký tự có trong chuỗi) không có giới hạn - ít nhất là 2^31.

Khai báo một chuỗi có 4 cách:

- khai váo với nháy đơn ( single quote )
- khai báo với nháy đôi ( double quote )
- khai báo heredoc
- khai báo nowdoc

Khai báo với nháy đơn (single quote):

Là cách đơn giản nhất để khai báo một chuỗi, bắt đầu bằng ` và kết thúc bằng `. Để 1 chuối có dấu nháy đơn, thêm ký tự \ ( back slash) phía trước: \`, hoặc các ký tự đặc biệt khác sử dụng \\ (double slash). Có thể thêm các ký tự xuống dòng như \r; \n hay \r\n.
Ví dụ:

<?php
echo 'Đây là một chuỗi';
// Outputs: Tâm nói: "Tôi sẽ quay trở lại"
echo 'Tâm nói: "Tôi sẽ quay trở lại"';
?> 

 Khai báo với dấu nháy đôi:

Bắt đầu bằng '' và kết thúc bằng ''. PHP cho phép các ký tự thoát sau:

\n linefeed (LF or 0x0A (10) in ASCII) 
\r carriage return (CR or 0x0D (13) in ASCII) 
\t horizontal tab (HT or 0x09 (9) in ASCII)
\v vertical tab (VT or 0x0B (11) in ASCII) (since PHP 5.2.5) 
\e escape (ESC or 0x1B (27) in ASCII) (since PHP 5.4.4)
\f form feed (FF or 0x0C (12) in ASCII) (since PHP 5.2.5)
\\ backslash
\$ dollar sign
\" double-quote
\[0-7]{1,3}  the sequence of characters matching the regular expression is a character in octal notation
\x[0-9A-Fa-f]{1,2} the sequence of characters matching the regular expression is a character in hexadecimal notation

Phân tách biến ( in ra giá trị biến – phân biệt với chuỗi ):

Khi một chuỗi được khai báo với dấu nháy đôi: '' và sử dụng các ký tự heredoc như $, {} - php sẽ phân tách biến và chuỗi.
Cú pháp đơn giản:
Ví dụ: In ra giá trị biến $foo

<?php
$foo = 1;
echo ''có $foo bầu trời'';
?>

php sẽ hiểu '' và 'bầu trời' là chuỗi, còn $foo là biến mà không hiểu $foo là chuỗi. Nếu không hiểu $foo là biến, sẽ in ra: có $foo bầu trời, ngược lại in ra chuỗi và giá trị biến: có 1 bầu trời.


Cú pháp phức tạp:
Sử dụng cặp ngoặc móc {}

<?php
$great = 'tuyệt vời';
echo "This is { $great}";
echo "This is {$great}";
echo "This is ${great}";
?>

 - Gọi hàm ảo, hằng số – biến tĩnh:
Sử dụng cú pháp {$}

<?php
class Person {
    const age = '18';
    public static $year = '2015';
}
echo "Tuổi {${Person::age}}\n";
echo "I'd like an {${Person::$year}}";
?>

Truy cập biến và các phép toán:

Một ký tự trong chuỗi có thể được thay đổi bằng cách truy cập thông qua offset (vị trí của nó trong chuỗi). Chuối bắt đầu với offset 0. Cũng có nghĩa, chuỗi là một mảng các ký tự.

Lưu ý:
chuỗi có thể truy cập với các sử dụng dấu ngoặc móc, ví dụ: $str{10}.

Lưu ý:

chuỗi rỗng, offset đầu tiên sẽ được gán giá trị NULL, (viết ngoài phạm vi số offset hiện có ) các loại phi số nguyên sẽ được chuyển thành số nguyên...

Các toán tử:

- Nối chuỗi: sử dụng '.'
Lưu ý: toán tử '+' php string không hỗ trợ.
- Nối và gán: sử dụng  ' .= '
Ví dụ:

<?php
$str = "Nguyen";
echo $str." Van A"; //ket qua: Nguyen Van A - noi chuoi ' Van A' vao chuoi 'Nguyen'
$str .= " Van A";
echo '
',$str; //ket qua: Nguyen Van A - noi chuoi ' Van A' vao chuoi 'Nguyen' va gan thanh chuoi moi: 'Nguyen Van A'
?>

 Các hàm xứ lý chuỗi:

Làm việc với php bạn sẽ phải xử lý chuỗi nhiều. PHP hỗ trợ rất nhiều hàm để xử lý chuỗi.
Đầu tiên, chuỗi là một mảng (dãy) các ký tự => bạn cần nắm vững các duyệt mảng - truy cập phần tử mảng - sửa đổi - 
đọc ... đã được học trong: mảng

Ví dụ:

<?php
     $str = "abc";
     echo $str[0];
    //xuất ra giá trị của ký tự có vị trí 0 [ký tự đầu tiên] - $str[0]
    truy cập vào ký tự có vị trị (offset) 0 của   chuối = đọc giá trị: sẽ được 'a';
     $str[0] = 'A'; //sửa đối ký tự offset 0 từ 'a' -> 'A'
     echo $str;

      for($i = 0; $i<3; $i++) //in ra vị trí của ký tự trong chuỗi và ký tự tương ứng
     {
           echo 'Vi tri ',$i,' ky tu: ',$str[$i],'';
     }
?>

Gán - sửa đổi giá trị - truy cập phần tử - duyệt chuỗi là các thao tác xử lý cơ bản đến chuỗi. Bạn cần nắm vững trước khi chuyển sang học xử lý chuỗi với hàm xử lý chuỗi php hỗ trợ.

Một số hàm xử lý chuỗi:

- strlen():

+ ý nghĩa: tính tổng số ký tự trong chuỗi - cơ bản dùng để duyệt chuỗi,...
+ giá trị trả về: 1 số nguyên - int
Ví dụ: xuất ra chiều dài chuỗi 'abc'

<?php    
    $str = 'abc';
    echo 'Chieu dai chuoi ',strlen($str); //xuất ra chiều dài của chuỗi 'abc', kết quả: 3
?>

  - trim(): dùng để loại bỏ khoảng trắng 2 đầu của một chuỗi

- lcfirst():

+ ý nghĩa: chuyển đổi ký tự đầu tiên của chuỗi thành ký tự thường
+ giá trị trả về: chuỗi đã được chuyển đổi

- ucfirst():

+ ý nghĩa: chuyển đổi ký tự đầu tiên của chuỗi thành ký tự hoa
+ giá trị trả về: chuỗi đã được chuyển đổi

- strtouper():

+ ý nghĩa: chuyển đổi tất cả các ký tự của chuỗi thành ký tự hoa
+ giá trị trả về: chuỗi đã được chuyển đổi

- strtolower():

+ ý nghĩa: chuyển đổi tất cả các ký tự của chuỗi thành ký tự thường
+ giá trị trả về: chuỗi đã được chuyển đổi
Ví dụ:

<?php
  $str = 'nguyen VaN a';
   echo 'ku tu dau tien thanh ky tu hoa: ',ucfirst($str),'<br>';
   echo 'ku tu dau tien thanh ky tu thuong: ',lcfirst($str),'<br>';
   echo 'tat ca ky tu thanh chu thuong: ',strtolower($str),'<br>';
   echo 'tat ca ky tu thanh chu hoa: ',strtouper($str),'<br>';
?>

- md5():

+ ý nghĩa: mã hóa chuỗi sử dùng thuật toán mã hóa md5 - hay sử dụng để mã hóa mật khẩu
+ giá trị trả về: chuỗi được mã hóa có 32 ký tự
Tương tự là hàm mã hóa sha1()
Ví dụ:

<?php
$pass = md5('abc123');   
echo 'mã hóa md5 cho chuỗi abc123: ',$pass,' chiều dài: ',strlen($pass),'<br>'; 
$pass = sha1('abc123');   
echo 'mã hóa sha1 cho chuỗi abc123: ',$pass,' chiều dài: ',strlen($pass),'<br>'; 
?>

 

Mã hóa mật khẩu,...các bạn sẽ tìm hiểu kỹ hơn trong bài Mã hóa

- Một số hàm tìm kiếm chuỗi:

+ stripos(string key, string find, start): trả ra vị trí đầu tiên của chuỗi tìm kiếm trong chuỗi nguồn.
trong đó string key: là chuỗi đưa vào tìm kiếm - string find là chuỗi nguồn , start là vị trí bắt đầu tìm kiếm

+strripos(string key, string find, start): trả ra vị trí cuối cùng của chuỗi tìm kiếm trong chuỗi nguồn.
trong đó string key: là chuỗi đưa vào tìm kiếm - string find là chuỗi nguồn , start là vị trí bắt đầu tìm kiếm.
Ví dụ: tìm chuỗi 'php' trong chuỗi $str

<?php  
 $str = 'php4 va php5';
   echo stripos("php",$str); // mặc định sẽ tìm từ vị trí 0 - kết quả là 0
   echo strripos("php",$str); // mặc định sẽ tìm từ vị trí 0 - kết quả là 9
?>

 Một số hàm cắt chuỗi:

- substr(string,start,length):
+ ý nghĩa: lấy ra 1 phần của chuỗi 
+ giá trị trả về: chuỗi được lấy ra
Trong đó: string là chuỗi nguồn - start là vị trị bắt đầu lấy chuỗi ( lưu ý: ký tự đầu tiên tính là vị trí 0 ) 
length là độ dài phần chuỗi sẽ cắt ra.
Ví dụ: Lấy chuỗi 'hello' từ chuỗi 'hello world';

<?php 
 echo substr("hello world",0,5); 
?>

Thường thì, tìm kiếm được kết hợp với cắt chuỗi.

Ví dụ: lấy ra chuỗi 'php' đầu tiên trong chuỗi "I am a developer php and good at php zend frame work":

<?php   
   //lấy ra vị trí của chuỗi "php" đầu tiên xuất hiện trong chuỗi tìm kiếm
   $php_pot = stripos("php","I am a developer php and good at php zend frame work"); 
   //cắt ra chuỗi "php" - ở đây tôi sử dụng hàm strlen trong trường hợp tổng quát
   echo substr("I am a developer php and good at php zend frame work",php_pot,strlen("php"));
?>

 

CHUYỂN ĐỔI GIỮA CHUỖI VÀ MẢNG:

- Hội tất cả các phần tử mảng thành 1 chuỗi:

Sử dụng hàm implode(), cú pháp:

string implode(string $glue, array $pices)

Trong đó:

  • $glue là nhóm ký tự phân tách giữa các phần tử mảng

  • $pices là mảng cần nối các phần tử thành 1 chuỗi

Ví dụ: gộp các phần tử của mảng arr thành 1 chuỗi, phân tách nhau bởi dấu '-'

<?php
$arr = array("tâm","lan","huyền");
echo implode("-",$arr);
//kết quả: tâm-lan-huyền
?>

 - Cắt một chuỗi thành 1 mảng:

Sử dụng hàm explode(), để cắt một chuỗi thành 1 mảng, cú pháp:

array explode ( string $delimiter , string $string [, int $limit ] )

Trong đó:

  • $delimiter: là các ký tự phân tách các ký tự vd: '-' ',' ';' ...vv
  • $string: là chuỗi cần tách thành 1 mảng
  • $limit: tùy chọn, số lượng phần tử tối đa của mảng

Ví dụ: Tách chuỗi 'tâm-lan-huyền' thành mảng 3 phần tử, phân tách nhau bởi ký tự '-'

<?php
$str = "tâm-lan-huyền";
print_r(explode("-",$str));
//giới hạn chỉ 2 phần tử
print_r(explode("-",$str,2));
?>

 KẾT THÚC:

Xử lý chuỗi là công việc quan trọng và thường xuyên trong lập trình php
các bạn cần nắm vững:

  • Thế nào là một chuỗi
  • Truy xuất cơ bản như gán, sửa giá trị, truy cập,,,,
  • Các thao tác xử lý chuỗi thông qua các hàm như tìm kiếm, cắt chuỗi,... 


Bài cùng chuyên mục:




Bình luận:


php php cơ bản xử lý chuỗi