PHP 문자열 자료형 따옴표 사용 방법 차이와 예제

PHP 문자열 자료형은 문자 데이터로 따옴표 사이에 위치합니다. 따옴표는 중복이 가능하되 같은 모양은 사용할 수 없습니다. 따옴표를 표시하고 싶은 경우 다른 따옴표를 사용하거나 이스케이프 문자를 사용합니다.

PHP 문자열 자료형

PHP 문자열 자료형은 PHP 변수값에 들어갈 수 있는 문자 형태의 데이터를 말합니다. 문자와 문자열 구분 없이 모두 문자열로 취급합니다.

문자열 자료형을 생성하는 방법은 변수값으로 큰 따옴표 " " 또는 작은 따옴표 ' ' 를 삽입하면 됩니다.

$변수명 = "변수값";
$변수명 = '변수값';

문자열 변수값에 큰 따옴표와 작은 따옴표는 사용목적에 따라 다릅니다. 일반적인 경우에는 큰 따옴표를 사용하는 경우가 많습니다.

<?php
     $x="안녕하세요?";
     echo $x;
?>

결과

안녕하세요?

문자열 따옴표 중복 사용

따옴표 중복 사용시 오류

따옴표로 둘러싸인 문자열에서 따옴표를 문자 자체로 출력하고 싶은 경우가 있습니다. 그럴 때 이미 사용한 문자열과 중복해서 사용하면 오류가 납니다.

아래 예시에서는 큰 따옴표로 작성된 문자열 사이에 다시 큰 따옴표를 넣거나 작은 따옴표로 만든 문자열에 다시 작은 따옴표를 넣은 경우입니다. 모두 오류가 발생합니다.

<?php
     echo "나는 "학교"에 간다.<br>";
     echo '아버지'가방'에 들어가신다';
?>

따옴표 크로스로 혼합 사용

문자열 중간에 따옴표 기호를 출력하는 첫 번째 방법은 큰 따옴표와 작은 따옴표를 섞어서 사용하는 것입니다.

PHP 문자열 자료형 크로스 사용 따옴표

문자열을 큰 따옴표로 감싼 상태라면, 중간에는 작은 따옴표를 사용합니다. 반대로 작은 따옴표로 감싼 상태라면 중간에는 큰 따옴표를 사용하면 출력이 가능합니다.

<?php
     echo "나는 '학교'에 간다.<br>";
     echo '아버지"가방"에 들어가신다.';
?>

결과

나는 '학교'에 간다.
아버지"가방"에 들어가신다.

이스케이프 문자

문자열 중간에 따옴표 기호를 출력하는 두 번째 방법은 이스케이프 문자(Escape Character)를 사용하는 것입니다.

아래 이스케이프 문자는 PHP 문자열 안에서 문자열로 취급될 수 있습니다.

PHP 이스케이프 문자
문자 이름 기능
\" 큰 따옴표(Double Quotes) 큰 따옴표 "  를 출력
\' 작은 따옴표(Single Quote) 작은 따옴표 '를 출력
\\ 백슬래시(Back Slash) 백슬래시 \ 출력
\t 탭(Horizontal Tab) Tab 단축키와 같은 공백 출력
\$ 달러(Dollar) PHP의 변수 기호인 달러 $ 기호가 문자로 출력

큰 따옴표로 만들어진 문자열 사이에 \"를 삽입하면 큰 따옴표를 표시할 수 있습니다.

<?php
     echo "사과가 \"머리\"에 떨어졌다.";
?>

결과

사과가 "머리"에 떨어졌다.

작은 따옴표로 만들어진 문자열 사이에 \'를 삽입하면 작은 따옴표를 표시할 수 있습니다.

<?php
     echo '여기가 \'우물\'입니다.';
?>

결과

여기가 '우물'입니다.

문자열 큰 따옴표 ” “

큰 따옴표 기능

PHP 문자열에서 큰 따옴표 " " 를 사용하는 경우는 문자열 안의 변수값을 실행하거나 이스케이프 문자를 출력할 때 사용합니다.

변수 출력 기능

큰 따옴표로 둘러싸인 문자열 내부에 변수를 넣으면 어떻게 될까요? 변수명에 기입된 변수값이 출력됩니다. 그래서 아래 예시에서는 $x가 아니라 변수값인 짱구가 출력됩니다.

<?php
     $x="짱구";
     echo "$x";
?>

결과

짱구

이스케이프 문자 출력

큰 따옴표로 둘러싸인 문자열에서는 이스케이프 문자를 사용시 정상적으로 문자가 출력됩니다.

PHP 이스케이프 문자 with 큰 따옴표
입력 출력
\" "
\' '
\\ \
\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

이스케이프 문자 무시

작은 따옴표로 둘러싸인 문자열에서는 이스케이프 문자가 소수만 적용됩니다. \'\\ 기호를 제외하고는 적용되지 않습니다.

PHP 이스케이프 문자 with 작은 따옴표
입력 출력 적용
\” \” X
\’ O
\\ \ O
\t \t X
\$ \$ X

큰 따옴표와 똑같은 예시 문장을 사용해도 echo ' ' 문장의 출력 결과는 전혀 다릅니다.

<?php
     $x="침묵";
     echo '죽느냐 \"사느냐\" 그것\\이\t문제로다. 그리고\$ 남은 것은 $x 뿐!';
?>

결과

죽느냐 \"사느냐\" 그것\이\t문제로다. 그리고\$ 남은 것은 $x 뿐!

죽느냐 뒤의 \"기호는 액면가 그대로 \"로 출력됩니다. 사느냐 뒤도 마찬가지입니다.
그것 뒤의 \\는 작은 따옴표도 작동하므로 정상적으로 \ 기호로 표시됩니다.
뒤의 \t는 무시되므로 액면 그대로 \t 값이 출력됩니다.
그리고 뒤의 \$기호도 액면 그대로 \$로 표시됩니다.
앞의 $x 변수 기호도 무시됩니다. 그래서 기호 자체인 $x가 출력됩니다.