Hiển thị các bài đăng có nhãn So Sánh Chuỗi. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn So Sánh Chuỗi. Hiển thị tất cả bài đăng

Thứ Tư, 25 tháng 9, 2019

[PHP] Kiểm tra một chuỗi có chứa chuỗi con hoặc chuỗi khác hay không

Link web : https://tanvietblog.com/2011/08/28/php-kiem-tra-mot-chuoi-co-chua-chuoi-con-hoac-chuoi-khac-hay-khong

Cách 1,

Cách giải quyết khá đơn giản, thuật toán cũng không có gì phức tạp lắm. Sau khi lấy chuỗi con trong chuỗi ban đầu thì chúng ta sẽ kiểm tra độ dài kết quả đó. Nếu độ dài lớn hơn 0 tức là có chuỗi con và ngược lại.
<?php
  if (strlen(strstr($chuoi_ban_dau, $chuoi_con)) > 0) {
    // Tìm thấy
  }
?>

Cách 2,

Giải pháp thứ 2 thì tôi sẽ dùng hàm strpos() để xử lý. Vì sao dùng hàm đó ?
Nguyên nhân là vì hàm strpos() sẽ trả về vị trí của kí tự đầu tiên của chuỗi con nếu tìm thấy nó trong chuỗi ban đầu. Nếu tìm thấy chuỗi con, hàm strpos() sẽ trả về giá trị lớn hơn 0 (true) và ngược lại là false.
<?php
  $pos = strpos($chuoi_ban_dau, $chuoi_con);

  if ($pos !== false) {
    //Tìm thấy
  } else {
    // Không tìm thấy
  }
?>

Demo,

Đoạn code dưới đây sẽ minh họa cho 2 cách trên
<?php
  // Kiểm tra chuỗi con có tồn tại trong 1 chuỗi bất kỳ hay không&nbsp;
  $str = 'Hello world !';
  $sub = 'world';

  // Cách 1
  if (strlen(strstr($str, $sub)) > 0) {
    echo 'Ton tai';
  } else {
    echo 'Khong ton tai';
  }

  // Cách 2
  if (strpos($str, $sub) !== false) {
    echo 'Ton tai';
  } else {
    echo 'Khong ton tai';
  }
?>

Và kết quả :

Chuỗi ban đầu: Hello world !
Chuỗi con: world
Ton tai
Ton tai

Kết luận,

a, Trong 2 cách trên thì các bạn nên dùng cách thứ 2 vì nó nhanh hơn và ít tốn bộ nhớ hơn.
b, Hàm strpos() sẽ trả về vị trí chứ không phải là kiểu boolean nên các bạn hãy dùng !== hoặc === khi so sánh kết quả trả về với false hoặc true. (Đọc thêm bài viết này để hiểu hơn về các kiểu so sánh trong PHP)