Hàm strpos() PHP sử dụng như thế nào ?

Hàm strpos() PHP là một trong những hàm được tích hợp sẵn trong ngôn ngữ lập trình PHP. Hàm này được sử dụng để tìm kiếm vị trí xuất hiện đầu tiên của một chuỗi hoặc một phần chuỗi trong chuỗi khác. Hàm này cũng cho phép chọn vị trí bắt đầu tìm kiếm.

Hàm strpos() PHP là hàm case-sensitive và binary-safe, có nghĩa là nó xem xét cả ký tự in hoa và thường, cũng như xem xét các ký tự đặc biệt khi tìm kiếm.

Lập Trình Viên mời bạn cùng tham khảo chi tiết nội dung bên dưới. Bài viết này nằm trong chuyên đề hướng dẫn PHP từ cơ bản đến nâng cao tại dự án Phát Triển Website.

Hàm strpos() PHP là gì?

Hàm strpos() PHP được sử dụng để tìm kiếm vị trí xuất hiện đầu tiên của một chuỗi hoặc một phần chuỗi trong chuỗi khác. Cú pháp của hàm như sau:

strpos(string $haystack, string $needle, int $offset = 0): int|false

Trong đó:

  • $haystack là chuỗi cần tìm kiếm.
  • $needle là chuỗi cần tìm.
  • $offset là vị trí bắt đầu tìm kiếm (tùy chọn). Nếu không chỉ định, mặc định là 0.

Hàm sẽ trả về vị trí đầu tiên của $needle trong $haystack, hoặc false nếu không tìm thấy $needle.

Hướng dẫn sử dụng hàm strpos() PHP

Để sử dụng hàm strpos() PHP, bạn chỉ cần truyền vào chuỗi cần tìm kiếm ($haystack) và chuỗi cần tìm ($needle). Nếu muốn bắt đầu tìm kiếm từ vị trí khác vị trí đầu tiên, bạn có thể chỉ định giá trị $offset.

Ví dụ 1

$haystack = "Hello Php";
$needle = "Php";

$result = strpos($haystack, $needle);

echo "Chuỗi ban đầu: " . $haystack . "<br/>";
echo "Chuỗi cần tìm: " . $needle . "<br/>";

if ($result === false) {
    echo "Không tìm thấy";
} else {
    echo "Vị trí của chuỗi cần tìm: " . $result;
}

Kết quả:

Chuỗi ban đầu: Hello Php
Chuỗi cần tìm: Php
Vị trí của chuỗi cần tìm: 6

Ví dụ 2

$haystack = "Hello php";
$needle = "Php";

$result = strpos($haystack, $needle);

echo "Chuỗi ban đầu: " . $haystack . "<br/>";
echo "Chuỗi cần tìm: " . $needle . "<br/>";

if ($result === false) {
    echo "Không tìm thấy";
} else {
    echo "Vị trí của chuỗi cần tìm: " . $result;
}

Kết quả:

Chuỗi ban đầu: Hello php
Chuỗi cần tìm: Php
Không tìm thấy

Ví dụ 3

$haystack = "Hello PHP";
$needle = "Hello";

$result = strpos($haystack, $needle);

echo "Chuỗi ban đầu: " . $haystack . "<br/>";
echo "Chuỗi cần tìm: " . $needle . "<br/>";

if ($result === false) {
    echo "Không tìm thấy";
} else {
    echo "Vị trí của chuỗi cần tìm: " . $result;
}

Cách triển khai hàm strpos() PHP

Hàm strpos() PHP được sử dụng để tìm kiếm lần xuất hiện đầu tiên của một ký tự hoặc một chuỗi trong một chuỗi. Hàm này trả về vị trí của ký tự hoặc chuỗi được tìm thấy, hoặc FALSE nếu không tìm thấy ký tự.

Hàm strpos() PHP có hai đối số:

  • haystack: Chuỗi cần được tìm kiếm.
  • needle: Ký tự hoặc chuỗi cần được tìm kiếm.

Ví dụ:

$haystack = "Hello World";
$needle = "lo";

// Tìm kiếm lần xuất hiện đầu tiên của chuỗi "lo" trong chuỗi "Hello World"
$result = strpos($haystack, $needle);

// In ra kết quả
echo $result;

Kết quả của đoạn code trên sẽ là:

3

Điều này có nghĩa là ký tự “l” đầu tiên xuất hiện ở vị trí thứ 3 trong chuỗi “Hello World”.

Hàm strpos() là một hàm binary-safe, nghĩa là nó có thể tìm kiếm ký tự hoặc chuỗi trong một chuỗi bất kể chúng được lưu trữ theo cách nào.

Dưới đây là một số ví dụ về cách triển khai hàm strpos() PHP:

// Tìm kiếm lần xuất hiện đầu tiên của ký tự "a" trong chuỗi "Hello World"
strpos("Hello World", "a"); // FALSE

// Tìm kiếm lần xuất hiện đầu tiên của tập hợp ký tự "el" trong chuỗi "Hello World"
strpos("Hello World", "el"); // 3

// Tìm kiếm lần xuất hiện đầu tiên của ký tự "o" trong chuỗi "Hello World"
strpos("Hello World", "o"); // 6

Để tìm kiếm lần xuất hiện đầu tiên của một ký tự hoặc một chuỗi trong một chuỗi, bạn có thể sử dụng hàm strpos() PHP.

Cách triển khai hàm strpos() bằng vòng lặp

Hàm strpos() là một hàm tích hợp sẵn trong PHP, vì vậy chúng ta không cần phải triển khai hàm này. Tuy nhiên, nếu bạn muốn hiểu cách hàm strpos() hoạt động, bạn có thể triển khai hàm này bằng vòng lặp.

Dưới đây là một cách để triển khai hàm strpos() PHP bằng vòng lặp:

function strpos_custom($haystack, $needle) {
  for ($i = 0; $i < strlen($haystack); $i++) {
    if ($haystack[$i] == $needle) {
      return $i;
    }
  }
  return FALSE;
}

$haystack = "Hello World";
$needle = "lo";

// Tìm kiếm lần xuất hiện đầu tiên của chuỗi "lo" trong chuỗi "Hello World" bằng vòng lặp
$result = strpos_custom($haystack, $needle);

// In ra kết quả
echo $result;

Kết quả của đoạn code trên sẽ là:

3

Hàm strpos_custom() hoạt động bằng cách lặp qua từng ký tự trong chuỗi và kiểm tra xem ký tự đó có bằng ký tự cần tìm hay không. Nếu ký tự đó bằng ký tự cần tìm, hàm sẽ trả về vị trí của ký tự đó.

So sánh hàm strpos() và hàm strstr()

Hàm strpos() PHP và hàm strstr() PHP đều được sử dụng để tìm kiếm lần xuất hiện của một ký tự hoặc một chuỗi trong một chuỗi. Tuy nhiên, hàm strpos() chỉ trả về vị trí của lần xuất hiện đầu tiên, trong khi hàm strstr() trả về một con trỏ tới lần xuất hiện đầu tiên.

Dưới đây là bảng so sánh hai hàm:

Tính năngstrpos()strstr()
Trả về giá trịVị trí của lần xuất hiện đầu tiênCon trỏ tới lần xuất hiện đầu tiên
Phân biệt chữ hoa chữ thường
Sử dụngKhi cần tìm kiếm lần xuất hiện đầu tiên của một ký tự hoặc một chuỗiKhi cần tìm kiếm lần xuất hiện đầu tiên của một ký tự hoặc một chuỗi và trả về một con trỏ tới nó

Lưu ý

Hàm strpos() PHP sẽ trả về FALSE nếu không tìm thấy ký tự hoặc chuỗi cần tìm. Nếu bạn cần kiểm tra xem ký tự hoặc chuỗi cần tìm có tồn tại trong chuỗi hay không, bạn có thể sử dụng hàm isset().

Ưu và Nhược điểm của hàm strpos() PHP

Ưu điểm

Hàm strpos() PHP là một trong những hàm tiện ích và phổ biến nhất trong PHP. Điểm lợi của hàm này bao gồm:

  • Hỗ trợ tìm kiếm vị trí xuất hiện đầu tiên của chuỗi hoặc phần chuỗi trong chuỗi lớn hơn.
  • Hỗ trợ thiết lập vị trí bắt đầu tìm kiếm.
  • Hàm case-sensitive và binary-safe, có thể xử lý các ký tự đặc biệt.

Nhược điểm

Tuy nhiên, hàm strpos() PHP cũng có một số nhược điểm:

  • Không hỗ trợ tìm kiếm vị trí xuất hiện cuối cùng của chuỗi.
  • Trả về false nếu không tìm thấy chuỗi cần tìm, dẫn đến khó khăn trong việc xử lý kết quả trả về.
  • Tốc độ chậm hơn so với một số hàm tìm kiếm khác như preg_match().

Lời khuyên khi sử dụng hàm strpos() PHP

Khi sử dụng hàm strpos() PHP , bạn nên cân nhắc đến những điểm sau đây để tránh những vấn đề không mong muốn:

  • Sử dụng hàm này khi cần tìm kiếm vị trí xuất hiện đầu tiên của chuỗi hoặc phần chuỗi trong chuỗi lớn hơn.
  • Chỉ định vị trí bắt đầu tìm kiếm nếu cần thiết.
  • Kiểm tra kết quả trả về có phải là false hay không để xử lý dữ liệu đúng cách.

Kết luận

Hàm strpos() là một trong những hàm quan trọng của PHP, giúp chúng ta tìm kiếm vị trí xuất hiện đầu tiên của chuỗi hoặc phần chuỗi trong chuỗi khác. Tuy nhiên, để sử dụng hàm này hiệu quả, bạn cần cẩn thận khi thiết lập vị trí bắt đầu tìm kiếm và xử lý kết quả trả về.

Nếu bạn đang học PHP hoặc đang làm việc với ngôn ngữ này, việc nắm vững hàm strpos() PHP sẽ giúp bạn xử lý dữ liệu một cách dễ dàng và hiệu quả. Hy vọng bài viết này đã giải đáp các thắc mắc của bạn về hàm strpos() và giúp bạn sử dụng nó một cách hiệu quả trong các dự án của mình. 

1. Hàm strpos() PHP có phân biệt chữ hoa và chữ thường không?

Đúng, hàm strpos() là case-sensitive, có nghĩa là nó phân biệt chữ hoa và chữ thường.

2. Vị trí bắt đầu tìm kiếm có bắt buộc không?

Không, vị trí bắt đầu tìm kiếm là tùy chọn. Nếu không chỉ định, giá trị mặc định là 0.

3. Hàm strpos() PHP có hỗ trợ tìm kiếm các ký tự đặc biệt không?

Có, hàm này binary-safe, có thể xử lý các ký tự đặc biệt.

4. Khi không tìm thấy chuỗi cần tìm, hàm sẽ trả về giá trị nào?

Khi không tìm thấy, hàm sẽ trả về giá trị false.

5. Hàm strpos() PHP có thể tìm kiếm vị trí xuất hiện cuối cùng của chuỗi không?

Không, hàm này chỉ tìm kiếm và trả về vị trí xuất hiện đầu tiên của chuỗi hoặc phần chuỗi trong chuỗi khác.