Hàm so sánh chuỗi php

Các hàm so sánh chuỗi trong PHP: phân biệt chữ hoa chữ thường, không phân biệt chữ hoa chữ thường, so sánh thứ tự tự nhiên, so sánh các ký tự ban đầu và chuỗi con.

PHP cung cấp một số hàm để so sánh các chuỗi. Ngoài so sánh phân biệt chữ hoa chữ thường của hai chuỗi với strcmp , bạn cũng có thể thực hiện so sánh phân biệt chữ hoa chữ thường với strcasecmp , so sánh thứ tự tự nhiên với strnatcmp và strnatcasecmp , và so sánh một số ký tự được chỉ định ở đầu chuỗi với strncmp . Bạn cũng có thể so sánh một chuỗi với một phần đã chọn của chuỗi khác bằng cách sử dụng substr_compare . Ngoài ra, bạn có thể sử dụng các toán tử so sánh để so sánh các chuỗi. Chúng ta sẽ bắt đầu từ đó.

So sánh các chuỗi với các toán tử so sánh

Các toán tử so sánh PHP có thể được áp dụng cho các chuỗi. Bạn có thể kiểm tra xem hai giá trị có bằng nhau [ == ] hay chúng giống hệt nhau [ === ]. Để được coi là giống hệt nhau, chúng phải có cùng giá trị và cùng kiểu, trong khi toán tử bằng nhau thực hiện chuyển đổi kiểu khi cần thiết. Hãy xem xét ví dụ sau:

$ val

=

27

;

$ val2

=

'27'

;

if

[

$ val

==

$ val2

]

{

echo

'bằng'

;

}

else

{

echo

'không bằng'

;

}

if

[

$ val

== =

$ val2

]

{

echo

'giống hệt'

;

}

else

{

echo

'không giống nhau'

;

}

Kết quả so sánh cho chúng ta biết rằng mặc dù một số nguyên 27 bằng với một chuỗi '27' , chúng không phải là giống hệt nhau . [1]

So sánh các chuỗi bằng các hàm so sánh

Chuyển hai đối số chuỗi cho các hàm so sánh của PHP và chúng sẽ trả về 0 nếu hai chuỗi bằng nhau, một số nguyên nhỏ hơn 0 nếu chuỗi đầu tiên nhỏ hơn chuỗi thứ hai hoặc một số nguyên lớn hơn 0 nếu chuỗi đầu tiên lớn hơn chuỗi thứ hai. [2]

Cơ bản nhất của các hàm so sánh chuỗi là strcmp . Hãy xem điều gì sẽ xảy ra khi chúng ta so sánh các biến mà chúng ta đã sử dụng trong ví dụ trên:

echo

strcmp

[

$ val < / p>

,

$ val2

]

;

Giá trị trả về 0 cho biết rằng hàm strcmp đã tìm thấy hai giá trị bằng nhau. Mặc dù hàm strcmp đã chuyển đổi thành công một giá trị không phải là chuỗi thành một chuỗi để so sánh này, nói chung bạn sẽ muốn chắc chắn rằng các đối số bạn chuyển cho các hàm chuỗi là chuỗi. Tìm hiểu thêm trong cuộc thảo luận của chúng tôi về Loại biến .

Phân biệt chữ hoa chữ thường

Hàm strcmp thực hiện so sánh phân biệt chữ hoa chữ thường. Chúng tôi chứng minh bằng cách so sánh 'January' với 'january' :

echo

strcmp

[

< p class = "string"> 'Tháng 1'

,

'january'

]

;

Kết quả là một số nguyên nhỏ hơn 0, cho biết rằng chuỗi đầu tiên nhỏ hơn chuỗi thứ hai, hay nói cách khác, hai chuỗi không bằng nhau. Để thực hiện so sánh không phân biệt chữ hoa chữ thường, hãy sử dụng strcasecmp :

echo

strcasecmp

[

< p class = "string"> 'Tháng 1'

,

'january'

]

;

Lần này kết quả là 0, cho biết rằng theo hàm strcasecmp , hai chuỗi bằng nhau.

So sánh Thứ tự Tự nhiên

Có lẽ bạn đã nhận thấy rằng khi so sánh các chuỗi chữ và số, các hàm so sánh chuỗi sắp xếp thứ tự chúng theo những cách có vẻ không tự nhiên, thậm chí phi logic. Hãy xem xét ví dụ hai chuỗi sau:

$ str1

=

'img4.jpg'

;

$ str2

=

'img20.jpg'

;

echo

strcmp

[

$ str1 < / p>

,

$ str2

]

;

Theo hàm strcmp , chuỗi đầu tiên lớn hơn chuỗi thứ hai. Nhưng làm thế nào điều đó có thể có ý nghĩa, bạn có thể tự hỏi? Xét cho cùng, 4 nhỏ hơn 20. PHP cung cấp hàm strnatcmp cho kiểu so sánh này:

echo

strnatcmp

[

$ str1 < / p>

,

$ str2

]

;

Kết quả của phép so sánh này cho thấy chuỗi đầu tiên nhỏ hơn chuỗi thứ hai, điều này thường mong muốn hơn đối với chuỗi chữ và số.

PHP cung cấp hàm strnatcasecmp để so sánh thứ tự tự nhiên không phân biệt chữ hoa chữ thường. Hãy xem xét ví dụ được hiển thị bên dưới:

$ str3

=

'img_4.jpg'

;

$ str4

=

'Img_20.jpg'

;

echo

strnatcmp

[

$ str3 < / p>

,

$ str4

]

;

echo

strnatcasecmp

[

$ str3 < / p>

,

$ str4

]

;

Nếu bạn tính đến chữ hoa trong khi so sánh, thì $ str3 lớn hơn $ str4 . Nếu bạn muốn so sánh thứ tự tự nhiên không phân biệt chữ hoa chữ thường của hai chuỗi, bạn có thể sử dụng hàm strnatcasecmp để tìm rằng $ str3 nhỏ hơn $ str4 .

So sánh Phần đầu tiên của chuỗi

PHP cung cấp các hàm so sánh một số ký tự được chỉ định ở đầu hai chuỗi. Hàm strncmp thực hiện so sánh phân biệt chữ hoa chữ thường trong khi hàm strncasecmp thực hiện so sánh không phân biệt chữ hoa chữ thường. Phần sau minh họa cho strncmp :

$ str1

=

'jan10'

;

$ str2

=

'jan04'

;

echo

strncmp

[

$ str1 < / p>

,

$ str2

,

3

]

;

Chúng tôi chuyển hai chuỗi và một số nguyên chỉ định số ký tự ban đầu để so sánh trong hai chuỗi. Ví dụ của chúng tôi trả về 0 cho chúng tôi biết rằng ba ký tự đầu tiên của hai chuỗi là bằng nhau.

Hàm strncasecmp hoạt động theo cùng một cách và nhận các đối số giống nhau. Điểm khác biệt duy nhất là nó không phân biệt chữ hoa chữ thường.

Hàm substr_compare được sử dụng để so sánh một chuỗi với bất kỳ phần nào của chuỗi dài hơn. Đối số offset chỉ định vị trí trong chuỗi chính mà so sánh sẽ bắt đầu và đối số length tùy chọn chỉ định nơi nó sẽ kết thúc. Ví dụ sau minh họa:

$ str

=

'brownies_qty'

;

$ pos

=

strrpos

[< / p>

$ str

,

'_'

]

;

echo

substr_compare

[

$ str < / p>

,

'brownies'

,

0

,

$ pos

]

;

Giá trị trả về của substr_compare giống như được mô tả ở trên cho các hàm so sánh chuỗi khác. Giá trị trả về 0 cho chúng ta biết rằng chuỗi con của chúng ta [ 'brownies' ] bằng với phần của $ str được chỉ định bởi các đối số offset và length .

Tìm thêm chi tiết về các đối số và tùy chọn có sẵn cho substr_compare trong Hướng dẫn sử dụng PHP và trong cuộc thảo luận của chúng tôi về hàm substr liên quan. Tìm hiểu thêm về strrpos trong phần trình bày của chúng tôi về các hàm tìm kiếm trong PHP .

Quay lại đầu trang

  • Tác giả: Thien Tam Nguyen
  • Ngày đăng: 2016-08-04
  • Đánh giá: 4 ⭐ [ 3423 lượt đánh giá ]
  • Khớp với kết quả tìm kiếm: - Source code: //codepad.org/0StZj4D1- Nguyên tắc so sánh 2 chuỗi:Ví dụ: so sánh 2 chuỗi s1, s2- Lấy từng kí tự của chuỗi s1 so sánh với từng kí tự của chuỗi s2 - nếu phát hiện sự khác biệt thì lập tức kết luận+ kí tự s1 lớn hơn kí tự s2 suy ra: chuỗi s1 lớn hơn chuỗi s2+ kí tự s1 nhỏ hơn kí tự s2 suy ra: chuỗi s1 nhỏ hơn chuỗi s2- Nếu 2 kí tự s1 và s2 bằng nhau thì tiếp tục so sánh đến khi nào gặp sự khác biệt hoặc kiểm tra hết tất cả các kí tự của 2 chuỗi mà vẫn không thấy sự khác biệt thì 2 chuỗi bằng nhau- So sánh 2 kí tự: là đang so sánh trên mã ASCII của nó - mã ACII là 1 mã số nguyên a: 97b: 98...

    z: 122

    A: 65B: 66...

    Z: 90

Video liên quan

Chủ Đề