PHP는 변수의 타입을 문자 변수와 문자열 변수로 구분하지 않습니다. PHP는 모두 하나의 문자열 변수로 취급합니다. 하지만 C 언어와 같은 언어들은 문자와 문자열을 구별하여 처리하고 있습니다.
PHP가 문자와 문자열을 구별하지 않더라도 개념을 이해하고 적용하면 더 많은 다양한 문자열 작업을 할 수 있습니다.
문자란 컴퓨터가 처리하는 1byte 단위로 ASCII 코드 타입의 글자를 말합니다. 우리가 알고 있는 A B C 등 알파벳 글자 한 글자 한 글자를 문자라고 합니다. 보통 문자는 단일 따옴표로 많이 작성합니다.
아스키 코드는 7비트 부호 체계로 컴퓨터에서 문자를 표현합니다. 00(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용됩니다.
10진수 부호 10진수 부호 10진수 부호 10진수 부호 032 056 8 080 P 104 h 033 ! 057 9 081 Q 105 i 034 “ 058 : 082 R 106 j 035 # 059 ; 083 S 107 k 036 $ 060 < 084 T 108 l 037 % 061 = 085 U 109 m 038 & 062 > 086 V 110 n 039 ‘ 063 ? 087 W 111 o 040 ( 064 @ 088 X 112 p 041 ) 065 A 089 Y 113 q 042 * 066 B 090 Z 114 r 043 + 067 C 091 [ 115 s 044 , 068 D 092 \ 116 t 045 - 069 E 093 ] 117 u 046 . 070 F 094 ^ 118 v 047 / 071 G 095 _ 119 w 048 0 072 H 096 ` 120 x 049 1 073 I 097 a 121 y 050 2 074 J 098 b 122 z 051 3 075 K 099 c 123 { 052 4 076 L 100 d 124 | 053 5 077 M 101 e 125 } 054 6 078 N 102 f 126 ~ 055 7 079 O 103 g
기본적으로 1바이트(8비트)에서 7비트는 정보를 표시하고 1비트는 에러 검출입니다. 에러 검출은 패리티 비트(parity Bit)라고도 합니다. 패리티 비트는 데이터 전송 시 오류 발생 여부를 체크합니다. 1의 개수가 홀수면 1을, 짝수면 0으로 표시합니다.
문자열은 말 그대로 문자들의 집합입니다. 여러 개의 문자들이 결합하여 문자열이 되는 것입니다.
C 언어에서는 문자열을 배열과 같은 개념으로 생각합니다. 동일한 문자열 변수의 이름을 가지고 있지만 한 글자씩 가지고 있는 변수(메모리)들의 집합으로 보는 것입니다. 보통 문자열은 이중 따옴표로 많이 작성을 합니다.
PHP는 문자열을 하나의 데이터로 처리를 합니다.
PHP에서 문자열을 생성, 저장하는 것은 매우 쉽습니다. 그냥 $ 변수명에 큰따옴표(“) 또는 작은따옴표(‘)로 묶어서 대입해주면 됩니다. PHP 언어는 문자와 문자열을 구분하지 않기 때문에 두 가지 모두 사용이 가능합니다.
|문자열|
$name1 = "Hello world!";
$name2 = ‘php world!’;
PHP 언어가 C 언어와 달리 문자와 문자열을 구분하지 않고, 문자 배열을 사전에 정의하지 않아도 된다는 것은 프로그램 동작 시 발생하는 데이터 타입 불일치 오류를 줄여줄 수 있는 강점입니다.
예제 파일 string-01.php
<?php
// 문자열 변수를 생성합니다.
$name = "Hello world!";
// 저장된 문자열을 화면에 출력합니다.
echo $name;
?>
결과
Hello world!
PHP는 문자열을 표시하는 데 있어서 큰따옴표(“)와 작은따옴표(‘)를 모두 사용할 수 있습니다. 작은따옴표(‘)는 큰따옴표(“) 안에 문자로 표시할 수 있습니다.
예제 파일 string-02.php
<?php
// 문자열 변수를 생성합니다.
// 작은따옴표는 큰따옴표 안에 들어갈 수 있습니다.
$name = "Hello 'PHP' world!";
// 저장된 문자열을 화면에 출력합니다.
echo $name;
?>
결과
Hello 'PHP' world!
위의 예제는 $name
변수에 문자열을 저장 후에 값을 출력합니다.
HTML은 대부분 문자열을 큰따옴표를 이용하여 사용하는 경우가 많다. 이러한 이유로 PHP 개발자들은 작은 따옴표를 선호하는 경향이 있습니다.
큰 따옴표을 포함하여 문자열을 처리할때, 충돌을 방지하기 위해서
\"
와 같이 이스케이프 문자를 같이 사용합니다.
문자열은 문자들의 집합입니다. 여러 개의 문자들이 집합되어 있는 배열과도 같습니다. 문자열은 indexed된 배열처럼 접근하여 값을 사용할 수 있습니다.
다음 예제는 문자열을 배열 형태로 접근하고 처리하는 예입니다.
예제 파일 string-03.php
<?php
// 문자열 변수를 생성합니다.
$name = "Hello world!";
for($i=0;$i<strlen($name);$i++){
// 한 글자씩 출력합니다.
echo "i = $i , " . $name[$i] . "<br>";
}
?>
결과
i = 0 , H
i = 1 , e
i = 2 , l
i = 3 , l
i = 4 , o
i = 5 ,
i = 6 , w
i = 7 , o
i = 8 , r
i = 9 , l
i = 10 , d
i = 11 , !
$ 문자열 변수명 뒤에 배열 기호 [ ]를 통해 한 글자 한 글자씩 접근할 수 있습니다.
생성한 변수의 타입이 문자열인지를 확인할 수 있습니다. is_string() 내부 함수는 입력되는 변수의 타입이 문자열인지를 판별하여 논리값으로 반환합니다.
|관련함수|
bool is_string ( mixed $var )
예제 파일 string-04.php
<?php
$values = array(false, true, null, 'abc', '23', 23, '23.5', 23.5, '', ' ', '0', 0);
foreach ($values as $value) {
echo "is_string(";
var_export($value);
echo ") = ";
echo var_dump(is_string($value));
echo "<br>";
}
?>
결과
is_string(false) = bool(false)
is_string(true) = bool(false)
is_string(NULL) = bool(false)
is_string('abc') = bool(true)
is_string('23') = bool(true)
is_string(23) = bool(false)
is_string('23.5') = bool(true)
is_string(23.5) = bool(false)
is_string('') = bool(true)
is_string(' ') = bool(true)
is_string('0') = bool(true)
is_string(0) = bool(false)
위의 예제는 문자열 변수 타입을 체크하는 예입니다. 향후에 함수에 대해서 구체적으로 알아보겠지만 $values 안에 있는 여러 개의 데이터 값 중에서 문자열만 비교 판단을 합니다.
문자 중에는 특수문자라는 것이 있습니다. 브라우저 이외에 콘솔 등 text 형태로 자료를 출력할 때 특수문자를 같이 이용할 때 좀 더 보기 좋은 문서를 만들 수 있습니다.
\n
:개행문자
\r
:캐리지 리턴
\t
:탭
\f
:폼피드
\b
:백스페이스
\a
:경고음
\e
:esc문자
\\
:역슬래시
Note: 이스케이프는 바로 다음에 위치한 글자를 단순한 문자로 인식을 합니다.
문자열 변수를 출력 문자열 안에 넣으면 출력 함수는 문자열의 내용과 문자열 변수의 내용을 같이 출력합니다. 하지만 변수를 작은따옴표로 감싸서 출력하면 변수명을 직접 출력할 수 있습니다.
예제 파일 string-05.php
<?php
$a = "hello world!";
// 문자열 변수 출력
print $a;
echo "<br>";
// 큰따옴표 안에 넣은 경우에도 변수 내용이 출력됩니다.
print "$a";
echo "<br>";
// 변수명을 출력하는 방법, 작은따옴표를 사용합니다.
print '$a';
?>
결과
hello world!
hello world!
$a
문자열을 사용할 때는 큰따옴표와 작은따옴표를 잘 구분하여 작성해야 합니다. PHP에서는 상황별로 다르게 인식하기 때문입니다.