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


php tham khảo 12/09/2015 Cùng chuyên mục

Danh sách các hàm xử lý chuỗi trong php như sub_str, str_replace, implode, ucfirst, htmladdcslashes, strpos, htmlentities, htmlspecialchars,...

Tổng quan

PHP được sử dụng chủ yếu cho mục đích lập trình web - trong đó phần nhiều liên quan đến xử lý văn bản. Có tới gần 100 hàm xử lý chuỗi được PHP hỗ trợ - bài này giới thiệu một số hàm xử lý chuỗi hay sử dụng.

Cấu trúc chung:

(int|string|bool) strlen (string $str);

Trong đó: 

  • (int|string) là kiểu giá trị trả ra 
  • string là kiểu dữ liệu cho đối số nhận vào, $str là tên đối số nhận vào
  • [..] tùy chọn

Hàm addcslashes()

Cú pháp: string addcslashes(string $str,string $charlist)
Công dụng: Trả ra một chuỗi thêm dấu \ vào ký tự trong $charlist
Ví dụ:

$a = "acb'";
echo addcslashes($a,"'\\").'<br>'; //kết quả: acb\'
echo addcslashes($a,"'\\c").'<br>'; //kết quả: a\cb\'

Hàm addslashes()

Cú pháp: string addslashes(string $str)
Công dụng: Thêm dấu \ trước các ký tự sau: 

  • single quote: '
  • double quoute: "
  • backslash: \
  • NULL

Hàm này thường được sử dụng để bảo vệ câu truy vấn sql ( chống sql injectson )
Ví dụ: Thêm dấu \ trước ký tự ' 

$name ="'nam";
$sql = "SELECT * FROM USER WHERE name = '".addslashes($name)."'";
echo $sql;

Hàm chop()

Cú pháp: string chop(string $str,[string $charlist])
Công dụng: Loại bỏ các ký tự trong $charlist ra khỏi chuỗi $str
Các ký tự sau mặc định sẽ bị loại bỏ:

  • Khoảng trắng: " "
  • NULL: "\0"
  • Tab: "\t"
  • vertical tab: "\x0B"
  • carriage return: "\r"
  • Xuống dòng: "\n"

Ví dụ: Loại bỏ ký tự NULL ra khỏi chuỗi

$name =" Nam va Hai \0 ";
echo chop($name);

Hàm htmlentities()

Cú pháp:string htmlentities(string $string,[string $flags, string $character-set,string $double_encode])
Công dụng: mã hóa chuỗi sang dạnh thực thể HTML
Trong đó:

$flags - có 3 tùy chọn:

  • ENT_COMPAT: (mặc định) mã hóa double quoute " " (sẽ không mã hóa single quoute)
  • ENT_QUOTES: Mã hóa cả double quoute và single quote
  • ENT_NOQUOTES: Không mã hóa cả cả 2 loại trên

Ví dụ: ( bạn viewsource trang kết quả sẽ thấy các ký tự đã đổi sang dạng thực thể: "&lt;?php echo 'hello world';?&gt;gt;"

$str = "<?php echo 'hello world';?>";
echo htmlentities($str);

Thường dùng chống sql injection và tấn công XSS

Hàm htmlentities_decode()

Cú pháp: html_entity_decode(string $string,[string $flags, string $character-set,string $double_encode])
Công dụng: giải mã thực thể sang mã HTML 
Các tham số truyền vào tương tự hàm htmlentities() - nếu tham số truyền vào cho hàm htmlentities() thế nào thì phải truyền cho hàm này tương ứng mới giải mã đúng.

Ví dụ:
$str = "&lt;&copy; abc";
echo html_entity_decode($str);

Hàm trim()

Cú pháp: trim(string $str,[string $charlist])
Công dụng: Loại các ký tự thuộc charlis ra khỏi 2 đầu của một chuỗi
Các ký tự thuộc charlist mặc định:

  • Khoảng trắng: " "
  • NULL: "\0"
  • Tab: "\t"
  • vertical tab: "\x0B"
  • carriage return: "\r"
  • Xuống dòng: "\n"

Ví dụ: Loại bỏ khoảng trắng 2 đầu của một chuỗi

$a = " abc ";
echo trim($a);

Hàm ucfirst()

Cú pháp: string ucfirst(string $str)
Công dụng: Chuyển đổi ký tự đầu tiên của chuỗi thành ký tự hoa
Ví dụ:

$nam = "nam";
echo ucfirst($nam); //kết quả: Nam

Hàm ucwords()

Cú pháp: string ucwords(string $str)
Công dụng: Chuyển đổi các từ trong chuổi, mỗi từ chữ cái đầu tiên thành chữ hoa như: My Name Is Nam
Ví dụ: 

$nam = "my name is nam";
echo ucwords($nam); //kết quả: My Name Is Nam

Hàm substr_replace()

Cú pháp: string substr_replace(string $str,string $replace,int $start,[ int $length])
Công dụng: Thay thế và cắt chuỗi tại ví trí $start một khoảng $length
Trong đó:

  • $str: là chuỗi nguồn (chuỗi sẽ bị thay thế)
  • $replace: là chuỗi thay thế
  • $start: vị trí trong chuỗi $str sẽ thay thế bởi chuỗi $replace
    nếu đăt là số dương sẽ tính từ đầu chuỗi - đặt là số âm sẽ tính từ cuối chuỗi -
    đặt là số 0 sẽ thêm vào đầu chuỗi - (*) vị trí đầu tiên của chuỗi được tính là 0 
    cuối chuỗi = chiều dài - 1;
  • length: là số ký tự sẽ thay thế - nếu không truyền vào sẽ thay thế từ vị trí $start cho đến cuối chuồi hoặc về đầu chuỗi ( $start đặt là số âm)

Ví dụ: Thêm chữ 'Xin' vào đầu chuỗi - thêm chữ ' Nam!' vào cuối chuỗi

$nam = "chào";
$nam = substr_replace($nam,"Xin ",0,0);
echo $nam;  //kết quả: Xin chào
echo substr_replace($nam," Nam!",(strlen($nam))); //kết quả: Xin chào Nam

Hàm substr_compare()

Cú pháp: int substr_compare(string $string1,string $string2,int $startpot,[int $length, bool $case])
Công dụng: So sánhchuỗi $string1 và $string2 ( chính xác theo giá trị nhị phân )
$startpot: vị trí bắt đầu tính để so sánh trong chuỗi $string1 
$length: độ dài các ký tự sẽ so sánh trong chuỗi $string1 - cách đặt vị trí và độ dài như hàm substr_replace().
Hàm trả ra 0 nếu 2 chuỗi giống nhau - 1 nếu 2 chuỗi khác nhau.
Ví dụ: 

echo substr_compare("abc","abc",0)."<br>"; //kết quả: 0
echo substr_compare("abc","aBc",0)."<br>"; //kết quả: 1
echo substr_compare("abc","b",1,1)."<br>"; //kết quả: 0
echo substr_compare("abc","c",-1,1)."<br>"; //kết quả: 0
echo substr_compare("abc","bc",-2,2)."<br>"; //kết quả: 0
echo substr_compare("abc","ab",1,2)."<br>"; //kết quả: 1

Hàm strlen()

Cú pháp: int strlen(string $str)
Công dụng: Trả ra chiều dài chuỗi $str

Ví dụ:

<?php    
    $str = 'Hello all';
    echo 'Chieu dai chuoi ',strlen($str); //Chieu dai chuoi: Hello all 9
?>

Hàm lcfirst():

Cú pháp: string lcfirst(string $str)
Công dụng: Đổi ký tự đầu tiên của chuỗi $str thành ký tự thường

Hàm ucfirst():

Cú pháp: string ucfirst(string $str)
Công dụng: chuyển đổi ký tự đầu tiên của chuỗi thành ký tự hoa

Hàm strtouper():

Cú pháp: string strtouper(string $str)
Công dụng: chuyển đổi tất cả các ký tự của chuỗi thành ký tự hoa

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>';
?>

Hàm mã hóa md5() và sha1()

Cú pháp: md5(string $str) - sha1(string $str)
Công dụng: Mã hóa chuỗi $str
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>'; 
?>

Hàm stripos()

Cú pháp: int stripos(string $str, string $find, [int $start])
Công dụng: trả ra vị trí đầu tiên của chuỗi $find tìm kiếm trong chuỗi $str

Hàm strripos()

Cú pháp: int strripos(string $str, string $find, [int $start])
Công dụng: trả ra vị trí cuối cùng của chuỗi $find tìm kiếm trong chuỗi $str
Ví dụ:

<?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
?>

Hàm substr()

Cú pháp: string substr(string $str,int $start,int $length)
Công dụng:  lấy ra 1 phần của chuỗi  tính từ vị trí $start - 1 khoảng $length
Ví dụ: Lấy chuỗi 'hello' từ chuỗi 'hello world';

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

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"));
?>

Hàm implode()

Cú pháp: string implode(string $glue, array $pices)
Công dụng: Hội tất cả các phần tử mảng $pices chuỗi - phân tách nhau bởi chuỗi $glue

  • $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
?>

Hàm explode()

Cú pháp: array explode ( string $delimiter , string $string [, int $limit ] )
Công dụng: cắt chuỗi $string thành 1 mảng
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));
?>

Hàm str_replace():

Cú pháp: string str_replace(string $find,string $replace,string $str,[int $count])
Công dụng: Thay thế chuỗi $find ( là chuỗi con của chuỗi $str ) bằng chuỗi $replace 
Tùy chọn: $count - một biến thêm vào để đếm số lượng từ thay thế
Ví dụ:

$str = "I la I Nam";
echo str_replace("I","toi",$str,$count)," so tu thay the ",$count;
//kết quả: toi la toi nam so tu thay the 2

 




Bình luận:


xử lý chuỗi thư viện php