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

Bạn có một chuỗi con và bạn muốn kiểm tra xem liệu nó có nằm trong chuỗi nào đó hay không ? Tôi nghĩ có nhiều bạn gặp trường hợp này rồi và hôm nay tôi sẽ cung cấp 2 giải pháp cho trường hợp này.

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)

 

 

Tấn Việt

Tôi lập trang web này để thỏa mãn sở thích viết cái gì đó vui vui khi rãnh rỗi và đồng thời cũng chia sẻ những gì tôi biết hoặc đọc đâu đó trên mạng về Lập trình web. Tôi hi vọng những bài viết này sẽ giúp ích cho các bạn. Thân ái!

You may also like...

6 Responses

  1. hiep says:

    Web hay ma sao ko co nguoi comment nhi

    • Tấn Việt says:

      Cảm ơn bạn đã quan tâm đến blog của mình. Mình không biết nhiều về SEO và marketing nên blog mình cũng ít người biết đến 🙂

  2. Trung says:

    Hay that, minh dang can code nay. 🙂

  3. Sơn says:

    Chào anh, anh có thể viết một bài hướng dẫn về việc người dùng nhập một chuỗi vào và mình kiểm tra xem có liên kết nào trong đó không, nếu có thì hiển thị liên kết đó được không ạ, em cảm ơn

  4. Sinh says:

    Mình thấy việc sử dụng hàm này cũng dc mà
    strpos(‘hello world’, ‘world’);
    return true or false.

  5. Thông tin rất hữu ích, đúng cái mình đang cần, cảm ơn ad nhé 😀

Leave a Reply

Your email address will not be published. Required fields are marked *