Menu

PHP echo: 문자열, 변수, HTML 출력하기

echo는 문자열을 하나 이상 출력합니다: echo "Hello, $name"; 또는 echo $a, $b;. 페이지에 텍스트나 HTML을 보내는 일반적인 방법입니다. print는 값 하나로 같은 일을 하고 1을 반환하며, <?= $x ?>는 HTML 안에서 쓰는 짧은 형태입니다.

이 페이지에는 실행 가능한 에디터가 있습니다 - 편집하고 실행하면 결과를 바로 볼 수 있습니다.

echo는 텍스트를 출력합니다. 문자열을 출력하려면 echo "Hello";, 변수를 포함하려면 echo "Hello, $name";, 여러 값을 이어서 출력하려면 echo $a, $b;를 씁니다. echo가 출력한 것이 브라우저에 보이는 페이지, 또는 터미널에 보이는 텍스트가 됩니다.

첫 줄은 보간(변수가 큰따옴표 안에 들어 있음)을, 두 번째 줄은 . 연산자로 문자열 연결을, 세 번째 줄은 쉼표로 구분한 세 값을 사용합니다. 세 줄 모두 같은 종류의 결과를 출력합니다.

HTML 출력

웹 페이지에서 echo는 보통 HTML을 출력합니다. 브라우저는 그 텍스트를 받아 태그를 렌더링합니다. Run을 누르면 Page 탭에 렌더링된 결과가 보입니다.

마지막 줄은 작은따옴표를 써서 class="note"의 큰따옴표를 이스케이프할 필요가 없습니다. 작은따옴표 안에서는 변수가 치환되지 않으므로 고정 텍스트에 쓰세요. 값이 방문자에게서 왔다면(폼, URL) HTML을 주입할 수 없도록 htmlspecialchars를 거쳐 출력하세요. htmlspecialchars 페이지를 참고하세요.

짧은 echo 태그 <?=

HTML 파일 안에서 <?= $value ?>는 <?php echo $value; ?>의 짧은 형태입니다. 템플릿을 읽기 쉽게 유지해 줍니다.

짧은 echo 태그는 항상 사용할 수 있습니다. 또 다른 짧은 태그인 php 없는 <?는 설정에 따라 달라지므로 쓰지 않는 것이 좋습니다.

여러 값과 줄바꿈 출력

echo는 줄바꿈을 추가하지 않습니다. 터미널에서는 "\n"(큰따옴표 안)이나 상수 PHP_EOL을 추가하세요. HTML에서는 소스의 줄바꿈이 화면에 보이지 않으므로 <br>이나 별도의 요소를 쓰세요.

쉼표와 점은 같은 출력을 냅니다. 쉼표를 쓰면 echo가 값을 차례로 출력하고, 점을 쓰면 PHP가 먼저 문자열 하나를 만든 뒤 출력합니다. 줄바꿈은 별도 페이지에서 다룹니다: PHP 줄바꿈.

echo와 print 비교

print는 더 오래된 형제입니다. 값 하나를 출력하고 항상 1을 반환하므로 표현식 안에 쓸 수 있습니다. echo는 값을 개수 제한 없이 받고 아무것도 반환하지 않습니다.

echoprint
값하나 이상, 쉼표로 구분정확히 하나
반환값없음(문장임)1
표현식 안에서 사용불가가능, $ok = print "x";
주 용도거의 모든 곳드묾

printf는 또 다릅니다. printf("%05.2f", 3.14159)처럼 자리표시자로 값을 서식화하며, sprintf 페이지에서 다룹니다.

배열이나 객체 출력

echo는 문자열과 문자열로 변환되는 값(숫자, 불리언, null)만 출력합니다. 배열은 변환되지 않습니다. 내 PHP에서는 경고와 함께 Array라는 단어가 출력됩니다.

PHP Warning:  Array to string conversion in /home/index.php on line 3
Array

내용을 보려면 용도에 맞는 함수를 고르세요.

객체는 더 엄격합니다. 클래스에 __toString()이 정의되어 있지 않으면 echo $object;는 Error: Object of class User could not be converted to string으로 스크립트를 멈춥니다. 불리언도 흔히 헷갈립니다. echo true;는 1을 출력하고 echo false;는 아무것도 출력하지 않습니다. 정확한 타입과 값을 봐야 할 때는 var_dump($value)를 쓰세요.

흔한 실수: 괄호와 쉼표를 함께 쓴 echo

echo가 함수처럼 보이기 때문에 echo("a", "b");라고 쓰기 쉽습니다. 괄호는 표현식 하나만 감싸므로 이것은 구문 오류입니다.

PHP Parse error:  syntax error, unexpected token "," in /home/index.php on line 2

괄호를 빼거나(echo "a", "b";) 값을 연결하세요(echo("a" . "b");). print도 마찬가지이며, 괄호가 있든 없든 두 번째 값을 받지 않습니다.

자주 묻는 질문

PHP에서 echo와 print의 차이는 무엇인가요?

둘 다 문자열을 출력합니다. echo는 쉼표로 구분한 여러 값을 받고(echo $a, $b;) 아무것도 반환하지 않습니다. print는 값을 정확히 하나만 받고 1을 반환하므로 표현식 안에서 쓸 수 있습니다. 실제로는 거의 어디서나 echo를 씁니다.

echo에 괄호가 필요한가요?

아니요. echo는 함수가 아니라 언어 구문이므로 echo "Hi";가 보통 형태입니다. echo("Hi");는 괄호가 표현식 하나를 묶을 뿐이라 동작하지만, echo("a", "b");는 구문 오류입니다.

echo false는 왜 아무것도 출력하지 않나요?

echo는 값을 문자열로 변환하는데, false는 빈 문자열 ""이 되고 true는 "1"이 됩니다. 불리언 자체를 보려면 var_dump($x);(bool(false) 출력)나 echo var_export($x, true);(false 출력)를 쓰세요.

PHP에서 <?=는 무슨 뜻인가요?

<?= $value ?>는 짧은 echo 태그로, <?php echo $value; ?>와 같습니다. PHP 5.4부터 항상 활성화되어 있으며, HTML 템플릿 안에서 값을 출력하는 일반적인 방법입니다.

Coddy 프로그래밍 언어 일러스트

Coddy로 코딩 배우기

시작하기