Forum und email

ob_start

(PHP 4, PHP 5)

ob_start — 출력 버퍼링을 켭니다.

설명

bool ob_start ([ callback $ output_callback ] )

출력 버퍼링을 켭니다. 출력 버퍼링을 활성화하면, (헤더를 제외한) 스크립트의 모든 출력을 내부 버퍼에 저장하고, 실제로 전송하지 않습니다.

이 내부 버퍼의 내용은 ob_get_contents()를 사용하여 문자열 변수로 복사할 수 있습니다. 내부 버퍼에 저장한 내용을 출력하려면, ob_end_flush()를 사용하십시오. 반대로 ob_end_clean()은 버퍼 내용을 버립니다.

선택적인 output_callback 함수를 지정할 수 있습니다. 이 함수는 문자열을 인자로 받고, 문자열을 반환해야 합니다. 이 함수는 ob_end_flush()를 호출하거나, 요청이 끝날 때 출력 버퍼가 브라우저로 전송할 때 호출됩니다. output_callback 은 출력 버퍼의 모든 내용을 인자로 받아서 브라우저로 전송할 새 출력 버퍼를 결과로 반환할 것이 기대됩니다. output_callback 가 호출할 수 있는 함수가 아니라면, 이 함수는 FALSE를 반환합니다.

Note: PHP 4.0.4에서, ob_gzhandler()가 웹 페이지 압축을 지원하는 웹 브라우저에 gz-인코드 데이터를 전송하기 위한 방법으로 생겼습니다. ob_gzhandler()는 브라우저가 허용하는 내용 인코딩 형태를 확인하고 그에 따라 출력합니다.

Note: PHP 4.3.2 이전에는 실행할 수 없는 output_callback 을 지정해도 FALSE를 반환하지 않았습니다.

출력 버퍼는 쌓여질 수 있기에, 다른 ob_start()가 활성화 중이라도 ob_start()를 호출할 수 있습니다. 단지 정확한 횟수의 ob_end_flush()를 호출하도록 하십시오. 다중 출력 콜백 함수를 활성화하면, 출력은 감싸진 순서대로 빠져나가면서 변경됩니다.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush(), ob_start()는 콜백 함수에서 호출할 수 없습니다. 이들을 콜백 함수에서 호출할 시의 행동은 정의되어 있지 않습니다. 버퍼의 내용을 지우려면 콜백 함수에서 ""(빈 문자열)을 반환하십시오.

Example#1 사용자 정의 콜백 함수 예제

<?php

function callback($buffer)
{
  
// 모든 apples를 oranges로 치환합니다.
  
return (str_replace("apples""oranges"$buffer));
}

ob_start("callback");

?>

<html>
<body>
<p>It's like comparing apples to oranges.
</body>
</html>

<?php

ob_end_flush
();

?>

출력은:

<html>
<body>
<p>It's like comparing oranges to oranges.
 

출력은:

<html>
<body>
<p>It's like comparing oranges to oranges.
</body>
</html>

참고: ob_get_contents(), ob_end_flush(), ob_end_clean(), ob_implicit_flush(), ob_gzhandler().