>백엔드 개발 >PHP 튜토리얼 >PHP 문자열 비교 함수 strcmp() 및 strcasecmp()_php 팁 사용 요약

PHP 문자열 비교 함수 strcmp() 및 strcasecmp()_php 팁 사용 요약

WBOY
WBOY원래의
2016-05-16 20:31:241199검색

문자열 비교는 모든 프로그래밍 언어의 문자열 처리 기능에서 중요한 기능 중 하나입니다. 비교를 위해 비교 연산자(==, < 또는 >)를 사용하는 것 외에도 PHP는 PHP가 보다 복잡한 문자열 비교를 수행할 수 있도록 하는 일련의 비교 함수를 제공합니다. strcmp(), strcasecmp() 및 strnatcmp()와 같은 함수.

1. 바이트 순서로 문자열 비교

문자열을 바이트 순서로 비교하려면 strcmp()와 strcasecmp()라는 두 함수를 사용할 수 있습니다. strcasecmp() 함수는 비교를 위해 문자열에서 문자의 대소문자를 무시할 수 있습니다. 이 두 함수의 프로토타입은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

in strcmp(string str1,string str2) //문자열의 문자를 대소문자를 구분하여 비교합니다
int strcasecmp(string str1,string str2) //문자열의 대소문자 비교를 무시합니다

이 두 함수의 사용법은 비슷하며 둘 다 비교를 위해 두 개의 문자열 매개변수를 전달해야 합니다. 두 문자열 중 첫 번째 바이트부터 입력 문자열 str1과 str2를 비교할 수 있으며, 두 문자열이 동일할 경우 비교가 완료될 때까지 다음 바이트로 비교가 진행됩니다. 다음 세 가지 값 중 하나를 반환합니다.
★str1이 str2와 같으면 0이 반환됩니다.
★str1이 str2보다 크면 1을 반환합니다.
★str1이 str2보다 작으면 -1을 반환합니다.
다음 프로그램에서 비교되는 두 문자열의 크기는 비교 후 반환된 값에 따라 결정됩니다. 문자열에서 대문자와 소문자를 구별하려면 strcmp() 함수를 사용하고, 문자열에서 문자의 대소문자 비교를 무시하려면 strcasecmp() 함수를 사용하십시오. 물론 실질적인 의미는 없습니다. 코드는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.

$username = "관리자";
$password = "램프브라더";

//대소문자를 구분하지 않는 비교, 두 문자열이 같으면 0을 반환합니다
if(strcasecmp($userName,"admin")== 0){
echo "사용자 이름이 존재합니다";
}
//비교된 두 문자열의 해당 함수를 모두 대문자 또는 모두 소문자로 변환한 후 대소문자를 구분하지 않는 비교도 수행할 수 있습니다
if(strcasecmp(strtolower($userName),strtolower("admin")) == 0){
echo "사용자 이름이 존재합니다";
}

// 문자열의 대소문자 구분 비교
스위치(strcmp($password,"lampbrother")){
사례 0:
echo "두 문자열은 같습니다
" break;
사례 1:
echo "첫 번째 문자열이 두 번째 문자열보다 큽니다
" break;
사례 -1:
echo "첫 번째 문자열이 두 번째 문자열보다 작습니다
" break;
}
?>

2. 자연순서에 따른 문자열 비교

PHP는 바이트의 사전 순서에 따른 비교 외에도 "자연 정렬" 방법에 따른 문자열 비교도 제공합니다. 소위 자연 정렬이란 사람들의 일상 생활에서의 사고 습관에 따라 정렬하는 것, 즉 문자열의 숫자 부분을 숫자 크기에 따라 비교하는 것을 말합니다. 예를 들어, "4"는 "33"의 첫 번째 문자보다 크고 자연 정렬 규칙에 따르면 "33"은 "4"보다 크기 때문에 바이트 단위로 비교할 때 "4"는 "33"보다 큽니다. 자연 정렬에서 두 문자열을 비교하려면 strnatcmp() 함수를 사용하십시오. 이 함수는 대소문자를 구분하며 사용 형식은 strcmp() 함수와 유사합니다.

다음 예에서는 버블 정렬을 사용하여 두 가지 비교 방법을 통해 배열의 숫자로 파일 이름을 정렬합니다. 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

//숫자 값을 포함하는 배열 정의 ​​
$files = array("file11.txt","file22.txt","file1.txt","file2.txt");

함수 mySort($arr,$select = false){
for($i=0;$i for($j;$j ​​​​ //두 번째 매개변수가 true이면 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() 함수를 사용하여 크기 비교
              }그밖에{
                   // 비교 결과가 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() 함수와 동일한 방식으로 사용됩니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.