PHP kiểm tra xem hai chuỗi có giống nhau không

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

== toán tử

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

if['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.
if['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

Hàm strcmp

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

if[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

Hàm strcasecmp

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

if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[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

Bạn có thể so sánh hai chuỗi bằng nhau với toán tử

$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
0 và
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
1. Các toán tử này khác nhau về cách chúng xử lý các toán hạng không phải chuỗi. Toán tử
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
0 chuyển toán hạng không phải chuỗi thành chuỗi, do đó, nó báo cáo rằng
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
3 và
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
4 bằng nhau. Toán tử
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
1 không truyền và trả về
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
6 nếu các loại đối số khác nhau

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
1

Các toán tử so sánh [

$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
7,
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
8,
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
9,
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
50] cũng hoạt động trên chuỗi

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
6

Tuy nhiên, các toán tử so sánh đưa ra kết quả không mong muốn khi so sánh các chuỗi và số

$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5

Khi một đối số cho toán tử so sánh là một số, thì đối số kia được chuyển thành một số. Điều này có nghĩa là

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
51 được chuyển thành một số, cho kết quả là
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
52 [vì chuỗi không bắt đầu bằng một số]. Bởi vì 0 nhỏ hơn 5, PHP in
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
53

Để so sánh rõ ràng hai chuỗi dưới dạng chuỗi, truyền số thành chuỗi nếu cần, hãy sử dụng hàm

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
54

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
5

Hàm trả về một số nhỏ hơn 0 nếu

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
55 sắp xếp trước
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
56, lớn hơn 0 nếu
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
56 sắp xếp trước
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
55 hoặc 0 nếu chúng giống nhau

if[strcmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
7

Một biến thể trên

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
54 là
if[strcmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
70 , chuyển đổi chuỗi thành chữ thường trước khi so sánh chúng. Các đối số và giá trị trả về của nó giống như đối số của
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
54

if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
1

Một biến thể khác của so sánh chuỗi là chỉ so sánh một vài ký tự đầu tiên của chuỗi. Các hàm

if[strcmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
72 và
if[strcmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
73 nhận một đối số bổ sung, số lượng ký tự ban đầu được sử dụng để so sánh

if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
4

Biến thể cuối cùng của các hàm này là so sánh thứ tự tự nhiên với

if[strcmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
74 và
if[strcmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
75, lấy cùng các đối số như
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
54 và trả về cùng loại giá trị. So sánh theo thứ tự tự nhiên xác định các phần số của các chuỗi được so sánh và sắp xếp các phần chuỗi riêng biệt với các phần số

hiển thị các chuỗi theo thứ tự tự nhiên và thứ tự ASCII

Bảng 4-5. Thứ tự tự nhiên so với thứ tự ASCII

Trật tự tự nhiên

thứ tự ASCII

if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
8
if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
8
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
0
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
60
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
61
$string = "PHP Rocks";
$number = 5;
if [$string < $number] {
  echo["$string < $number"];
}
PHP Rocks < 5
0
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
63
if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
63

PHP cung cấp một số hàm cho phép bạn kiểm tra xem hai chuỗi có xấp xỉ bằng nhau không. ________ 277 , ________ 278 , ________ 279 và ________ 310

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
65

Mỗi thuật toán Soundex và Metaphone tạo ra một chuỗi đại diện cho cách phát âm của một từ trong tiếng Anh. Để xem liệu hai chuỗi có xấp xỉ bằng nhau với các thuật toán này hay không, hãy so sánh cách phát âm của chúng. Bạn chỉ có thể so sánh giá trị Soundex với giá trị Soundex và chỉ giá trị Metaphone với giá trị Metaphone. Thuật toán Metaphone thường chính xác hơn, như ví dụ sau minh họa

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
66

Hàm

if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
11 trả về số lượng ký tự mà hai đối số chuỗi của nó có điểm chung. Đối số thứ ba, nếu có, là một biến để lưu trữ mức độ phổ biến dưới dạng phần trăm

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
67

Thuật toán Levenshtein tính toán độ giống nhau của hai chuỗi dựa trên số lượng ký tự bạn phải thêm, thay thế hoặc xóa để làm cho chúng giống nhau. Chẳng hạn,

if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
12 và
if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
13 có khoảng cách Levenshtein là 1, vì bạn chỉ cần thay đổi một ký tự [từ
if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
14 thành
if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
15] để làm cho chúng giống nhau

if['string1' == 'STRING1']
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
68

Thước đo độ tương tự này thường được tính toán nhanh hơn so với thước đo được sử dụng bởi hàm

if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
11. Theo tùy chọn, bạn có thể chuyển ba giá trị cho hàm
if[strcasecmp['string1', 'string1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'String1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
if[strcasecmp['string1', 'STRING1'] == 0]
{
     echo '
Strings match.
';
} else {
     echo '
Strings do not match.
';
}
10 để chèn, xóa và thay thế trọng số riêng lẻ—ví dụ: để so sánh một từ với một từ rút gọn

Ví dụ này đặt trọng số quá mức cho phép chèn khi so sánh một chuỗi với khả năng co lại của nó, bởi vì phép rút gọn không bao giờ được chèn các ký tự

Bạn có thể sử dụng == để so sánh các chuỗi trong PHP không?

Toán tử gán chỉ định biến ở bên trái để có một giá trị mới như biến ở bên phải, trong khi toán tử bằng == kiểm tra sự bằng nhau và trả về đúng hoặc sai theo . Ví dụ. Ví dụ này mô tả so sánh chuỗi bằng toán tử ==. . Example: This example describes the string comparison using the == operator.

Tôi có thể sử dụng == để so sánh hai chuỗi không?

Bạn không nên sử dụng == [toán tử đẳng thức] để so sánh các chuỗi này vì chúng so sánh tham chiếu của chuỗi, i. e. liệu chúng có phải là cùng một đối tượng hay không. Mặt khác, phương thức equals[] so sánh xem giá trị của các chuỗi có bằng nhau hay không và không phải chính đối tượng.

Làm thế nào để PHP so sánh các chuỗi với các toán tử so sánh?

PHP sẽ so sánh các chuỗi alpha sử dụng toán tử so sánh lớn hơn và nhỏ hơn dựa trên thứ tự bảng chữ cái . Trong ví dụ đầu tiên, ai đứng trước i theo thứ tự bảng chữ cái nên phép thử của > [lớn hơn] là sai - thứ tự sớm hơn được coi là 'nhỏ hơn' thay vì 'lớn hơn'.

Chủ Đề