본문으로 바로가기

PHP 문자열

category 웹코딩/PHP 2018. 6. 7. 11:00

PHP에서 사용되는 문자열을 자세히 들여다보고, 관련된 규칙들을 살펴봅니다.

문자열(String)

문자들을 표현할때 사용하며, 메모리 공간의 제약이 없다. 즉, 문자열의 길이에 상관없이 제한 없는 문자열을 지원한다.

문자열은 큰따옴표("), 작은따옴표('), 히어닥문법(Heredoc), 나우닥문법(Nowdoc)을 이용하여 할당할 수 있다.

큰따옴표

"Hello $name \n" 와 같이 큰따옴표 사이에 문자열을 써넣으면 PHP는 문자열을 해석하는 절차를 거친다. 큰따옴표 내부에 변수가 있다는 이는 변수의 값을 출력하고 특수문자가 있다면 특수문자에 부여된 바를 행한다.

큰따옴표 내부에서 사용될 수 있는 특수문자는 아래와 같다.

특수문자 의미
\n 개행문자(줄 바꿈)
\r 캐리지 리턴(현재 위치를 나타내는 커서를 맨 앞으로 이동시킨다)
\t 수평 탭
\" 따옴표
\$ 달러 표시
<?php
$str = 'World';
echo "Hello $str";  //Hello World
echo "Hello \n"  //Hello 
?>

작은따옴표

작은따옴표 안에서는 특수문자와 변수가 허용되지 않는다. 작은따옴표 및 역슬래시 자체를 출력하기 위한 역슬래시(\)만 해석된다. 작은따옴표는 문자열 해석절차를 거치지 않기때문에 큰따옴표보다 성능의 우위를 점하나 큰 차이가 있는 것은 아니다.

<?php
$str = 'World';
echo 'Hello $str';  //Hello $str
echo 'Hello \n'  //Hello \n 
?>

Heredoc

Heredoc 문법은 문자열의 시작과 종료를 알려 주는 방식을 이용하여 문자열을 보다 편리하게 표현하는 방법이다. 문자열의 시작을 알릴 때는 <<< 다음에 문자열에 대한 식별자를 표시하고 문자열이 종료될 때는 그 식별자를 다시 표시하는 방법이다.

<?php
$str = <<<EOD
문자열을 넣습니다.
문자열을 반복합니다.
EOD;
?>

EOD라는 식별자를 사용하여 문자열을 표현했고 그 결과는 큰따옴표를 사용한 것과 같다. 큰따옴표에 비해 장점이 있다면 문자열 내부에 따옴표를 추가하고자 할때 굳이 역슬래시를 쓸 필요가 없다는 것이다.

Nowdoc

PHP 5.3.0부터 Nowdoc 문법이 추가되었으며, 식별자에 작은따옴표가 붙으며, 변수를 해석하지 않는다. 작은따옴표 방식과 유사한 방식이다.

<?php
$str = <<<'EOT'
Hello $name.
문자열이 해석되지 않습니다.
'EOT';
?>

PHP 변수의 해석

큰따옴표와 Heredoc 문법에서는 문자열 내부의 변수를 해석하여 처리하는데 이는 이어지는 문자열에 따라 예상밖의 결과를 초래하기도 한다. 이를 안전하게 처리하기 위해 변수를 {}를 이용해 감싸는 방식이 추천된다.

<?php
$money = '1000';
echo "수입이 $money 발생하였다.";  //수입이 1000 발생하였다.
echo "수입이 $money원 발생하였다.";  //$money원 이라는 변수를 찾기에 올바르지 않다.
echo "수입이 $money 원 발생하였다.";  //수입이 1000 원 발생하였다.
echo "수입이 {$money}원 발생하였다.";  //수입이 1000원 발생하였다.
?>

PHP 문자열 합치기

PHP에서는 마침표(.)를 사용해 다수의 문자열을 합쳐 하나의 문자열로 만들 수 있다. echo 명령어 안에서 문자열 합치기를 사용하면 PHP가 여러 문자열을 하나로 합치고, 이 문자열을 브라우저에 출력하게 된다.

<?php
$name = '홍길동';

echo '나의 이름은'.$name.'입니다.'; 
?> 

'웹코딩 > PHP' 카테고리의 다른 글

PHP 상수  (0) 2018.06.06
PHP 변수  (1) 2018.06.05
PHP 기본 문법  (0) 2018.06.04
PHP 기초  (0) 2018.06.01