Hàm substr_count() trong PHP
Trần Thị Vân
- 1223
- 30/07/2025
Chức năng của Hàm substr_count() trong PHP
Hàm substr_count() trong PHP dùng để đếm số lần xuất hiện của chuỗi con trong một chuỗi lớn có điều kiện về vị trí cần đếm, có phân biệt chữ hoa và chữ thường.
Cú pháp của Hàm substr_count() trong PHP
substr_count("chuỗi_gốc", "chuỗi_con");
chuỗi_gốc: Chuỗi gốc.
chuỗi_con: Chuỗi con cần đếm số lần xuất hiện.
substr_count("chuỗi_gốc", "chuỗi_con",vị_trí_bắt_đầu);
chuỗi_gốc: Chuỗi gốc.
chuỗi_con: Chuỗi con cần đếm số lần xuất hiện.
vị_trí_bắt_đầu: Vị trí bắt đầu đếm đến cuối chuỗi.
substr_count("chuỗi_gốc", "chuỗi_con",vị_trí_bắt_đầu, vị_trí_kết_thúc);
chuỗi_gốc: Chuỗi gốc.
chuỗi_con: Chuỗi con cần đếm số lần xuất hiện.
vị_trí_bắt_đầu: Vị trí bắt đầu đếm.
vị_trí_kết_thúc: Vị trí kết thúc đếm.
Ví dụ Hàm substr_count() trong PHP
<?php
// Đếm số lần xuất hiện của "oi" trong chuỗi gốc
echo substr_count("Toi day, toi can giup do", "oi"); //Kết quả: 2
echo "<br>";
// Đếm số lần xuất hiện của "ôi" trong chuỗi gốc
echo substr_count("Tôi đây, tôi cần giúp đở", "ôi"); //Kết quả: 2
echo "<br>";
// Đếm số lần xuất hiện của "tôi" trong chuỗi gốc
echo substr_count("Tôi đây, tôi cần giúp đở", "tôi"); //Kết quả: 1
echo "<br>";
// Đếm số lần xuất hiện của "oi" trong $chuoigoc từ vị trí 5 đến cuối chuỗi
echo substr_count("Toi day, toi can giup do", "oi",5); //Kết quả: 1
echo "<br>";
// Đếm số lần xuất hiện của "oi" trong $chuoigoc từ vị trí 1 lấy ra 2 ký tự
echo substr_count("Toi day, toi can giup do", "oi",1,2); //Kết quả: 1
echo "<br>";
?>
Kết quả:
2
2
1
1
1
Những lưu ý khi sử dụng substr_count() trong PHP
Để sử dụng substr_count() chính xác, ngoài việc nắm cú pháp còn cần chú ý đến cách hàm xử lý chuỗi cần tìm, vị trí bắt đầu và phạm vi kiểm tra. Những điểm này đặc biệt quan trọng khi dữ liệu được lấy từ biểu mẫu, API hoặc nội dung do người dùng nhập.
Phân biệt substr_count() với các cách đếm chuỗi khác
substr_count() phù hợp khi cần biết một chuỗi con xuất hiện bao nhiêu lần trong một chuỗi lớn. Hàm trả về số lần xuất hiện và không cần phải tự tách chuỗi thành mảng trước khi đếm.
Trong trường hợp chỉ cần kiểm tra một chuỗi có tồn tại hay không, việc sử dụng hàm đếm có thể không phải lựa chọn tối ưu về mặt mục đích. Khi đó, các phương thức tìm kiếm chuỗi sẽ dễ thể hiện đúng ý định của đoạn mã hơn.
Cũng cần phân biệt substr_count() với việc đếm các phần tử sau khi dùng explode(). Hai cách này có thể cho kết quả khác nhau vì substr_count() tìm chuỗi con theo nội dung thực tế, còn explode() chia chuỗi dựa trên một dấu phân cách.
Xử lý trường hợp chuỗi cần tìm không tồn tại
Nếu chuỗi cần tìm không xuất hiện trong chuỗi nguồn, substr_count() trả về 0. Đây là kết quả hợp lệ và có thể dùng trực tiếp trong điều kiện để xử lý các trường hợp không tìm thấy.
<?php
$text = "PHP giúp xây dựng nhiều loại website.";
$count = substr_count($text, "JavaScript");
if ($count === 0) {
echo "Không tìm thấy chuỗi cần tìm.";
}
?>
Không nên xem giá trị 0 là lỗi. Nếu mục tiêu là kiểm tra số lần xuất hiện, đây chính là thông tin cần nhận được khi chuỗi không tồn tại trong dữ liệu.
Ảnh hưởng của tham số offset và length
Khi sử dụng thêm offset hoặc length, phạm vi tìm kiếm sẽ bị giới hạn. Vì vậy, kết quả có thể thấp hơn so với việc kiểm tra toàn bộ chuỗi dù chuỗi cần tìm vẫn xuất hiện ở phần dữ liệu bên ngoài phạm vi đó.
<?php
$text = "PHP PHP PHP";
$count = substr_count($text, "PHP", 4);
echo $count;
?>
Trong ví dụ trên, quá trình đếm bắt đầu từ vị trí được chỉ định bởi offset, thay vì từ đầu chuỗi. Khi kết hợp với length, cần xác định rõ độ dài vùng dữ liệu muốn kiểm tra để tránh bỏ sót kết quả.
Đặc biệt, không nên tùy ý đặt các giá trị này khi chưa xác định vị trí và phạm vi chuỗi cần xử lý. Với dữ liệu thay đổi theo từng trường hợp, việc tính toán sai vị trí bắt đầu có thể khiến kết quả đếm không đúng với mong muốn.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm substr_count() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *