Trong bất kỳ loại lập trình nào, bạn sẽ luôn gặp các tình huống cần so sánh các giá trị với nhau, nếu các giá trị là boolean hoặc số nguyên thì việc so sánh rất đơn giản. Nhưng nếu bạn muốn so sánh các chuỗi hoặc các phần của chuỗi thì có thể so sánh nhiều hơn, chẳng hạn như trường hợp của chuỗi bạn đang so sánh. Trong hướng dẫn này, chúng ta sẽ xem xét tất cả các cách khác nhau để bạn có thể so sánh các chuỗi trong PHP bằng cách sử dụng một số hàm PHP tích hợp
Cách phổ biến nhất mà bạn sẽ thấy khi so sánh hai chuỗi đơn giản là sử dụng toán tử == nếu hai chuỗi bằng nhau thì nó trả về true
// Using the == operator, Strings match is printedif['string1' == 'string1']{ echo 'Strings match.';} else { echo 'Strings do not match.';}
Mã này sẽ trả về các chuỗi khớp nhau, nhưng nếu các chuỗi không giống nhau thì nó sẽ không khớp. Nếu tất cả các chữ cái trong một chuỗi đều ở dạng chữ hoa thì điều này sẽ trả về false và các chuỗi không khớp
// Using the == operator, Strings do not match is printedif['string1' == 'STRING1']{ echo 'Strings match.';} else { echo 'Strings do not match.';}
Điều này có nghĩa là chúng ta không thể sử dụng toán tử == khi so sánh các chuỗi từ đầu vào của người dùng, ngay cả khi chữ cái đầu tiên được viết hoa, nó vẫn trả về false. Vì vậy, chúng ta cần sử dụng một số chức năng khác để giúp so sánh các chuỗi
Một cách khác để so sánh các chuỗi là sử dụng hàm PHP strcmp, đây là hàm so sánh chuỗi an toàn nhị phân sẽ trả về 0 nếu các chuỗi khớp
// strcmp function, Strings match is printedif[strcmp['string1', 'string1'] == 0]{ echo 'Strings match.';} else { echo 'Strings do not match.';}
Câu lệnh if này sẽ trả về true và lặp lại rằng các chuỗi khớp với nhau. Nhưng hàm này phân biệt chữ hoa chữ thường nên nếu một trong các chuỗi có chữ hoa thì hàm sẽ không trả về 0
Các ví dụ trước sẽ không cho phép bạn so sánh các chuỗi chữ hoa chữ thường khác nhau, hàm sau đây sẽ cho phép bạn so sánh các chuỗi không phân biệt chữ hoa chữ thường
// Both strings will matchif[strcasecmp['string1', 'string1'] == 0]{ echo 'Strings match.';} else { echo 'Strings do not match.';} // Both strings will match even with different caseif[strcasecmp['string1', 'String1'] == 0]{ echo 'Strings match.';} else { echo 'Strings do not match.';} // Both strings will match even with different caseif[strcasecmp['string1', 'STRING1'] == 0]{ echo 'Strings match.';} else { echo 'Strings do not match.';}
Tất cả các câu lệnh if này sẽ trả về các chuỗi khớp nhau, có nghĩa là chúng ta có thể sử dụng hàm này khi so sánh các chuỗi do người dùng nhập vào