PHP의 count_chars() 함수는 문자열에 포함된 각 문자에 대한 정보를 반환하는 함수입니다. 이 함수를 활용하면 특정 문자열에서 어떤 ASCII 문자가 몇 번 사용되었는지, 또는 반대로 사용되지 않은 문자는 무엇인지 쉽게 파악할 수 있습니다.
문법
count_chars(string $string, int $mode = 0)
매개변수
str − 검사할 대상 문자열입니다.
mode − 반환 형식을 지정하는 매개변수로, 기본값은 0입니다.
mode 매개변수의 반환 형식
0 − 키는 ASCII 값, 값은 해당 문자의 출현 횟수를 담은 배열을 반환합니다. (출현 횟수가 0인 문자도 포함)
1 − 키는 ASCII 값, 값은 출현 횟수를 담은 배열을 반환하되, 출현 횟수가 0보다 큰 문자만 나열합니다.
2 − 키는 ASCII 값, 값은 출현 횟수를 담은 배열을 반환하되, 출현 횟수가 정확히 0인 문자만 나열합니다.
3 − 문자열에서 실제로 사용된 모든 서로 다른 문자들을 하나의 문자열로 반환합니다.
4 − 문자열에서 사용되지 않은 모든 문자들을 하나의 문자열로 반환합니다.
반환값
count_chars() 함수는 지정된 mode 매개변수에 따라 배열 또는 문자열 형태로 결과를 반환합니다.
예제 1: mode = 1 (사용된 문자와 출현 횟수)
<?php $s = "Weclome!"; print_r(count_chars($s, 1)); ?>
출력
Array
(
[33] => 1
[87] => 1
[99] => 1
[101] => 2
[108] => 1
[109] => 1
[111] => 1
)위 출력 결과를 해석해 보면, ASCII 코드 33은 느낌표(!), 87은 대문자 W, 99는 소문자 c, 101은 소문자 e(2회 출현), 108은 소문자 l, 109는 소문자 m, 111은 소문자 o를 의미합니다. 즉, 문자열 "Weclome!"에서 각 문자가 몇 번 등장했는지 한눈에 확인할 수 있습니다.
예제 2: mode = 3 (사용된 모든 문자 나열)
<?php $s = "Welcome!"; echo count_chars($s, 3); ?>
출력
!Wcelmo
이 예제에서는 mode 값을 3으로 설정하여, 문자열 "Welcome!"에 실제로 사용된 서로 다른 문자들이 중복 없이 하나의 문자열로 출력됩니다. ASCII 순서대로 정렬되어 느낌표(!)가 가장 먼저 표시되는 점을 확인할 수 있습니다.
정리
count_chars() 함수는 문자열 분석, 입력 데이터 검증, 중복 문자 제거 등 다양한 상황에서 유용하게 활용할 수 있습니다. 특히 mode 옵션을 적절히 조합하면 사용된 문자와 사용되지 않은 문자를 모두 손쉽게 처리할 수 있다는 점이 큰 장점입니다.