문자열 비교는 모든 프로그래밍 언어의 문자열 처리 기능에서 중요한 기능 중 하나입니다. 비교를 위해 비교 연산자(==, < 또는 >)를 사용하는 것 외에도 PHP는 PHP가 보다 복잡한 문자열 비교를 수행할 수 있도록 하는 일련의 비교 함수를 제공합니다. strcmp(), strcasecmp() 및 strnatcmp()와 같은 함수.
1. 문자열을 바이트 순서로 비교합니다
문자열을 바이트 순서로 비교하려면 strcmp() 및 strcasecmp() 함수를 사용할 수 있습니다. strcasecmp() 함수는 대문자와 소문자를 비교합니다. 이 두 함수의 프로토타입은 다음과 같습니다.
in strcmp(string str1,string str2) //区分字符串中字母大小写地比较 int strcasecmp(string str1,string str2) //忽略字符串中字母大小写地比较
이 두 함수의 사용법은 비슷하며 둘 다 비교를 위해 두 개의 문자열 매개변수를 전달해야 합니다. 두 문자열 중 첫 번째 바이트부터 입력 문자열 str1과 str2를 비교할 수 있으며, 두 문자열이 동일할 경우 비교가 완료될 때까지 다음 바이트로 비교가 진행됩니다. 다음 세 가지 값 중 하나를 반환합니다.
1 str1이 str2와 같으면 0을 반환합니다.
2. str1이 str2보다 크면 1을 반환합니다.
3. str1이 str2보다 작으면 -1을 반환합니다.
다음 프로그램에서 비교되는 두 문자열의 크기는 비교 후 반환된 값에 따라 결정됩니다. 문자열에서 대문자와 소문자를 구별하려면 strcmp() 함수를 사용하고, 문자열에서 문자의 대소문자 비교를 무시하려면 strcasecmp() 함수를 사용하십시오. 코드는 다음과 같습니다:
<?php $username = "Admin"; $password = "lampBrother"; //不区分大小写的比较,如果两个字符串相等返回0 if(strcasecmp($userName,"admin")== 0){ echo "用户名存在"; } //将两个比较的字符串相应的函数转成全大写或全小写后,也可以实现不区分大小写的比较 if(strcasecmp(strtolower($userName),strtolower("admin")) == 0){ echo "用户名存在"; } //区分字符串中字母的大小写比较 switch(strcmp($password,"lampbrother")){ case 0: echo "两个字符串相等<br>"; break; case 1: echo "第一个字符串大于第二个字符串<br>"; break; case -1: echo "第一个字符串小于第二个字符串<br>"; break; } ?>
2. 자연 정렬에 따른 문자열 비교
PHP는 바이트의 사전 순서에 따른 비교 외에도 "자연 정렬" 방법에 따른 문자열 비교도 제공합니다. 소위 자연 정렬이란 사람들의 일상 생활에서의 사고 습관에 따라 정렬하는 것, 즉 문자열의 숫자 부분을 숫자 크기에 따라 비교하는 것을 말합니다.
예를 들어, "4"는 "33"의 첫 번째 문자보다 크고 자연 정렬 규칙에 따르면 "33"은 "4"보다 크기 때문에 바이트 단위로 비교할 때 "4"는 "33"보다 큽니다. ". 자연 정렬에서 두 문자열을 비교하려면 strnatcmp() 함수를 사용하십시오. 이 함수는 대소문자를 구분하며 사용 형식은 strcmp() 함수와 유사합니다.
다음 예에서는 버블 정렬 방법을 사용하여 두 가지 비교 방법을 통해 파일 이름을 숫자로 배열로 정렬합니다. 코드는 다음과 같습니다.
<?php //定义一个包含数字值的数组 $files = array("file11.txt","file22.txt","file1.txt","file2.txt"); function mySort($arr,$select = false){ for($i=0;$i<count($arr);$i++){ for($j;$j<count($arr)-1;$j++){ //如果第二个参数为ture则使用strcmp()函数比较大小 if($select){ //前后两个值比较结果大于0则交换位置 if(strcmp($arr[$j],$arr[j+1])>0){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; } //如果第二个参数为false则使用strnatcmp()函数比较大小 }else{ //如果比较结果大于0交换位置 if(strnatcmp($arr[$j],$arr[$j+1])>0){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1]; = $tmp; } } } } return $arr; //排序后的数组 } print_r(mySort($files,true)); //选择按字典顺序排序: file1.txt file11.txt file2.txt file22.txt print_r(mySort($files,false)); //选择按自然顺序排序:file1.txt file2.txt file11.txt file22.txt ?>
이 함수는 PHP에서 strnatcasecmp() 함수의 대소문자 무시 버전도 제공합니다. 사용법은 strnatcmp() 함수와 동일합니다.
추천 튜토리얼: PHP 비디오 튜토리얼
위 내용은 PHP에서 두 문자열의 크기를 비교하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!