So sánh hai chuỗi trong php và hiển thị sự khác biệt về ký tự

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

$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
2 và
$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
3. 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ử
$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
2 chuyển toán hạng chuỗi thành số, do đó, nó báo cáo rằng
$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
5 và
$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
6 bằng nhau. Do các quy tắc để truyền chuỗi thành số, nó cũng sẽ báo cáo rằng
$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
5 và
$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
8 bằng nhau, vì chỉ phần của chuỗi có ký tự không phải là số được sử dụng khi truyền nó. Toán tử
$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
3 không ép kiểu và trả về
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
0 nếu kiểu dữ liệu của các đối số khác nhau

$o1 = 3;
$o2 = "3";

if ($o1 == $o2) {
  echo("== returns true
"
); } if ($o1 === $o2) { echo("=== returns true
"
); } == returns true

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

$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
1,
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
2,
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
3,
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
4) cũng hoạt động trên chuỗi

$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet

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ố

________số 8_______

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à

$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
5 được chuyển thành một số, cho kết quả là
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
6 (vì chuỗi không bắt đầu bằng một số). Bởi vì 0 nhỏ hơn 5, PHP in
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
7

Để 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

$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
8

$relationship = strcmp(string_1, string_2);

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

$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
9 sắp xếp trước
$relationship = strcmp(string_1, string_2);
0, lớn hơn 0 nếu
$relationship = strcmp(string_1, string_2);
0 sắp xếp trước
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
9 hoặc 0 nếu chúng giống nhau

$n = strcmp("PHP Rocks", 5);
echo($n);
1

Một biến thể trên

$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
8 là
$relationship = strcmp(string_1, string_2);
4, 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
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
8

$n = strcasecmp("Fred", "frED");   // $n is 0

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

$relationship = strcmp(string_1, string_2);
6 và
$relationship = strcmp(string_1, string_2);
7 nhận một đối số bổ sung, số lượng ký tự ban đầu được sử dụng để so sánh

$relationship = strncmp(string_1, string_2, len);
$relationship = strncasecmp(string_1, string_2, len);

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

$relationship = strcmp(string_1, string_2);
8 và
$relationship = strcmp(string_1, string_2);
9, lấy cùng các đối số như
$string = "PHP Rocks";
$number = 5;

if ($string < $number) {
  echo("{$string} < {$number}");
}
PHP Rocks < 5
8 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

$n = strcmp("PHP Rocks", 5);
echo($n);
1
1

$n = strcmp("PHP Rocks", 5);
echo($n);
1
1

$n = strcmp("PHP Rocks", 5);
echo($n);
1
3

$n = strcmp("PHP Rocks", 5);
echo($n);
1
4

$n = strcmp("PHP Rocks", 5);
echo($n);
1
4

$n = strcmp("PHP Rocks", 5);
echo($n);
1
3

$n = strcmp("PHP Rocks", 5);
echo($n);
1
7

$n = strcmp("PHP Rocks", 5);
echo($n);
1
7

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.

$n = strcmp("PHP Rocks", 5);
echo($n);
1
9,
$n = strcasecmp("Fred", "frED");   // $n is 0
0,
$n = strcasecmp("Fred", "frED");   // $n is 0
1 và
$n = strcasecmp("Fred", "frED");   // $n is 0
2

$soundexCode = soundex($string);
$metaphoneCode = metaphone($string);
$inCommon = similar_text($string_1, $string_2 [, $percentage ]);
$similarity = levenshtein($string_1, $string_2);
$similarity = levenshtein($string_1, $string_2 [, $cost_ins, $cost_rep, $cost_del ]);

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

$known = "Fred";
$query = "Phred";

if (soundex($known) == soundex($query)) {
  print "soundex: {$known} sounds like {$query}
"
; } else { print "soundex: {$known} doesn't sound like {$query}
"
; } if (metaphone($known) == metaphone($query)) { print "metaphone: {$known} sounds like {$query}
"
; } else { print "metaphone: {$known} doesn't sound like {$query}
"
; } soundex: Fred doesn't sound like Phred metaphone: Fred sounds like Phred

Hàm

$n = strcasecmp("Fred", "frED");   // $n is 0
1 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

$string1 = "Rasmus Lerdorf";
$string2 = "Razmus Lehrdorf";
$common = similar_text($string1, $string2, $percent);
printf("They have %d chars in common (%.2f%%).", $common, $percent);
They have 13 chars in common (89.66%).

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,

$n = strcasecmp("Fred", "frED");   // $n is 0
4 và
$n = strcasecmp("Fred", "frED");   // $n is 0
5 có khoảng cách Levenshtein là 1, vì bạn chỉ cần thay đổi một ký tự (____________6 thành
$n = strcasecmp("Fred", "frED");   // $n is 0
7) để làm cho chúng giống nhau

$him = "Fred";
$her = "Wilma";

if ($him < $her) {
  print "{$him} comes before {$her} in the alphabet.\n";
}
Fred comes before Wilma in the alphabet
0

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

$n = strcasecmp("Fred", "frED");   // $n is 0
1. Theo tùy chọn, bạn có thể chuyển ba giá trị cho hàm
$n = strcasecmp("Fred", "frED");   // $n is 0
2 để tính trọng số riêng lẻ cho các lần chèn, xóa và thay thế—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ự

Làm cách nào để so sánh hai chuỗi ký tự theo ký tự trong PHP?

Hàm strcmp() so sánh hai chuỗi. Ghi chú. Hàm strcmp() an toàn nhị phân và phân biệt chữ hoa chữ thường. Mẹo. Hàm này tương tự như hàm strncmp(), với sự khác biệt là bạn có thể chỉ định số lượng ký tự từ mỗi chuỗi sẽ được sử dụng để so sánh với hàm strncmp().

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 tùy theo . Thí 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.

Làm cách nào để so sánh hai chuỗi trong điều kiện if trong PHP?

hàm strcasecmp() . Nó không phân biệt chữ hoa chữ thường cũng như an toàn nhị phân (có nghĩa là nó không trả về 0 hoặc 1). Nó sẽ trả về số không (0) nếu cả hai chuỗi bằng nhau.

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