PHP 문자열 자료형은 문자 데이터로 따옴표 사이에 위치합니다. 따옴표는 중복이 가능하되 같은 모양은 사용할 수 없습니다. 따옴표를 표시하고 싶은 경우 다른 따옴표를 사용하거나 이스케이프 문자를 사용합니다.
PHP 문자열 자료형
PHP 문자열 자료형은 PHP 변수값에 들어갈 수 있는 문자 형태의 데이터를 말합니다. 문자와 문자열 구분 없이 모두 문자열로 취급합니다.
문자열 자료형을 생성하는 방법은 변수값으로 큰 따옴표 " "
또는 작은 따옴표 ' '
를 삽입하면 됩니다.
$변수명 = "변수값";
$변수명 = '변수값';
문자열 변수값에 큰 따옴표와 작은 따옴표는 사용목적에 따라 다릅니다. 일반적인 경우에는 큰 따옴표를 사용하는 경우가 많습니다.
<?php
$x="안녕하세요?";
echo $x;
?>
결과
안녕하세요?
문자열 따옴표 중복 사용
따옴표 중복 사용시 오류
따옴표로 둘러싸인 문자열에서 따옴표를 문자 자체로 출력하고 싶은 경우가 있습니다. 그럴 때 이미 사용한 문자열과 중복해서 사용하면 오류가 납니다.
아래 예시에서는 큰 따옴표로 작성된 문자열 사이에 다시 큰 따옴표를 넣거나 작은 따옴표로 만든 문자열에 다시 작은 따옴표를 넣은 경우입니다. 모두 오류가 발생합니다.
<?php
echo "나는 "학교"에 간다.<br>";
echo '아버지'가방'에 들어가신다';
?>
따옴표 크로스로 혼합 사용
문자열 중간에 따옴표 기호를 출력하는 첫 번째 방법은 큰 따옴표와 작은 따옴표를 섞어서 사용하는 것입니다.
문자열을 큰 따옴표로 감싼 상태라면, 중간에는 작은 따옴표를 사용합니다. 반대로 작은 따옴표로 감싼 상태라면 중간에는 큰 따옴표를 사용하면 출력이 가능합니다.
<?php
echo "나는 '학교'에 간다.<br>";
echo '아버지"가방"에 들어가신다.';
?>
결과
나는 '학교'에 간다.
아버지"가방"에 들어가신다.
이스케이프 문자
문자열 중간에 따옴표 기호를 출력하는 두 번째 방법은 이스케이프 문자(Escape Character)를 사용하는 것입니다.
아래 이스케이프 문자는 PHP 문자열 안에서 문자열로 취급될 수 있습니다.
문자 | 이름 | 기능 |
---|---|---|
\" |
큰 따옴표(Double Quotes) | 큰 따옴표 " 를 출력 |
\' |
작은 따옴표(Single Quote) | 작은 따옴표 ' 를 출력 |
\\ |
백슬래시(Back Slash) | 백슬래시 \ 출력 |
\t |
탭(Horizontal Tab) | Tab 단축키와 같은 공백 출력 |
\$ |
달러(Dollar) | PHP의 변수 기호인 달러 $ 기호가 문자로 출력 |
큰 따옴표로 만들어진 문자열 사이에 \"
를 삽입하면 큰 따옴표를 표시할 수 있습니다.
<?php
echo "사과가 \"머리\"에 떨어졌다.";
?>
결과
사과가 "머리"에 떨어졌다.
작은 따옴표로 만들어진 문자열 사이에 \'
를 삽입하면 작은 따옴표를 표시할 수 있습니다.
<?php
echo '여기가 \'우물\'입니다.';
?>
결과
여기가 '우물'입니다.
문자열 큰 따옴표 ” “
큰 따옴표 기능
PHP 문자열에서 큰 따옴표 " "
를 사용하는 경우는 문자열 안의 변수값을 실행하거나 이스케이프 문자를 출력할 때 사용합니다.
변수 출력 기능
큰 따옴표로 둘러싸인 문자열 내부에 변수를 넣으면 어떻게 될까요? 변수명에 기입된 변수값이 출력됩니다. 그래서 아래 예시에서는 $x
가 아니라 변수값인 짱구
가 출력됩니다.
<?php
$x="짱구";
echo "$x";
?>
결과
짱구
이스케이프 문자 출력
큰 따옴표로 둘러싸인 문자열에서는 이스케이프 문자를 사용시 정상적으로 문자가 출력됩니다.
입력 | 출력 | |
---|---|---|
\" |
→ | " |
\' |
→ | ' |
\\ |
→ | \ |
\t |
→ | |
\$ |
→ | $ |
<?php
$x="침묵";
echo "죽느냐 \"사느냐\" 그것\\이\t문제로다. 그리고\$ 남은 것은 $x 뿐!";
?>
결과
죽느냐 "사느냐" 그것\이 문제로다. 그리고$ 남은 것은 침묵 뿐!
죽느냐
뒤의 \"
기호는 큰 따옴표 "
를 뜻합니다. 사느냐
뒤의 기호도 동일합니다.
그것
뒤의 \\
기호는 백슬래시 \
를 뜻합니다.
문제
앞의 \t
는 공백 한 칸을 출력합니다.
그리고
뒤의 \$
기호도 달러 $
기호로 출력됩니다.
뿐
앞의 $x
는 변수 x
에 들어있는 변수값을 출력합니다.
주의사항
변수와 다른 문자를 한 칸 띄고 작성해야 합니다. 아래 예시처럼 $x
뒤의 단어를 바로 붙여서 쓰면 변수와 붙어있는 단어가 아예 표시가 안될 수 있습니다.
x 뿐
띄어쓰지 않고, $x뿐
으로 붙여 쓴 경우입니다.
<?php
$x="침묵";
echo "죽느냐 \"사느냐\" 그것\\이\t문제로다. 그리고\$ 남은 것은 $x뿐!";
?>
결과
죽느냐 "사느냐" 그것\이 문제로다. 그리고$ 남은 것은 !
문장 맨 마지막에 침묵뿐이라는 단어 자체가 사라졌습니다.
문자열 작은 따옴표 ‘ ‘
작은 따옴표 기능
반면 작은 따옴표로 만든 문자열은 변수나 이스케이프 문자를 무시합니다. 즉 순수하게 문자를 액면 그대로 출력합니다.
변수 형태 무시
작은 따옴표로 둘러싸인 문자열 사이에 변수를 넣으면 어떻게 될까요? 큰 따옴표와 달리 변수값을 호출하지 않고 순수 문자를 출력해버립니다.
아래 예시에서 echo '$x';
로 작은 따옴표로 변수를 넣을 경우 출력 결과는 짱구가 아니라 $x
라는 문자 자체가 됩니다.
<?php
$x="짱구";
echo '$x';
?>
결과
$x
이스케이프 문자 무시
작은 따옴표로 둘러싸인 문자열에서는 이스케이프 문자가 소수만 적용됩니다. \'
및 \\
기호를 제외하고는 적용되지 않습니다.
입력 | 출력 | 적용 | |
---|---|---|---|
\” | → | \” | X |
\’ | → | ‘ | O |
\\ | → | \ | O |
\t | → | \t | X |
\$ | → | \$ | X |
큰 따옴표와 똑같은 예시 문장을 사용해도 echo ' '
문장의 출력 결과는 전혀 다릅니다.
<?php
$x="침묵";
echo '죽느냐 \"사느냐\" 그것\\이\t문제로다. 그리고\$ 남은 것은 $x 뿐!';
?>
결과
죽느냐 \"사느냐\" 그것\이\t문제로다. 그리고\$ 남은 것은 $x 뿐!
죽느냐
뒤의 \"
기호는 액면가 그대로 \"
로 출력됩니다. 사느냐
뒤도 마찬가지입니다.
그것
뒤의 \\
는 작은 따옴표도 작동하므로 정상적으로 \
기호로 표시됩니다.
이
뒤의 \t
는 무시되므로 액면 그대로 \t
값이 출력됩니다.
그리고
뒤의 \$
기호도 액면 그대로 \$
로 표시됩니다.
뿐
앞의 $x
변수 기호도 무시됩니다. 그래서 기호 자체인 $x
가 출력됩니다.