Output Control 함수 목록
PHP Manual

ob_start

(PHP 4, PHP 5)

ob_start출력 버퍼링을 켭니다

설명

bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )

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

이 내부 버퍼의 내용은 ob_get_contents()를 이용해서 문자열 변수로 복사할 수 있습니다. 내부 버퍼에 들어있는 내용을 출력하려면, ob_end_flush()를 사용하십시오. 반대로, ob_end_clean()은 버퍼 내용을 출력 없이 지웁니다.

Warning

몇몇 웹 서버(아파치 등)는 콜백 함수를 호출할 때 스크립트의 작업 디렉토리를 바꿉니다. 콜백 함수 안에서 chdir(dirname($_SERVER['SCRIPT_FILENAME'])) 등을 사용하여 복귀할 수 있습니다.

출력 버퍼는 쌓을 수 있습니다. 즉, ob_start()가 작동중일 때, 다른 ob_start()를 호출할 수 있습니다. 정확한 횟수의 ob_end_flush()을 호출하면 아무런 문제가 없습니다. 여러 개의 출력 콜백 함수가 작동중이면, 출력은 감싸여진 순서대로 필터링됩니다.

인수

output_callback

선택적인 output_callback 함수를 지정할 수 있습니다. 이 함수는 문자열을 인수로 받고, 문자열을 반환해야 합니다. 이 함수는 (ob_flush(), ob_clean() 등의 함수로) 출력 버퍼를 보내거나(전송) 비울 때, 또는 요청 마지막에 출력 버퍼를 브라우저로 보낼 때 호출됩니다. output_callback 이 호출되면, 출력 버퍼의 내용을 인수로 받고, 브라우저로 전송할 새 출력 버퍼를 결과로 반환하여 작동합니다. output_callback 이 호출할 수 있는 함수가 아니라면, 이 함수는 FALSE를 반환합니다.

콜백 함수가 두 인수를 가지고 있으면, 두번째 인수는 PHP_OUTPUT_HANDLER_START, PHP_OUTPUT_HANDLER_CONT, PHP_OUTPUT_HANDLER_END로 구성된 비트 필드로 채워집니다.

output_callbackFALSE를 반환하면, 원 입력이 브라우저로 전송됩니다.

output_callback 인수는 NULL 값을 넘겨서 지나갈 수 있습니다.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush(), ob_start()는 콜백 함수에서 호출할 수 없습니다. 이 함수들을 콜백 함수에서 호출하면, 그 동작은 정의되어 있지 않습니다. 버퍼 내용을 지우고 싶으면, 콜백 함수에서 ""(빈 문자열)을 반환하면 됩니다. 또한, 출력 버퍼링 함수를 사용하는 print_r($expression, true), highlight_file($filename, true) 등의 함수도 콜백 함수에서 호출할 수 없습니다.

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

chunk_size

선택적인 chunk_size 인수가 전달되면, 버퍼 길이가 chunk_size 와 같거나 초과하게 되는 출력 호출 후에 버퍼가 전송됩니다. 기본값인 0은 함수를 마지막에만 호출하며, 특수값 1은 chunk_size 를 4096으로 설정합니다.

erase

선택적인 erase 인수를 FALSE로 설정하면, 스크립트가 종료될 때 까지 버퍼가 지워지지 않습니다. (PHP 4.3.0부터)

반환값

성공할 경우 TRUE를, 실패할 경우 FALSE를 반환합니다.

변경점

버전 설명
4.3.2 output_callback 가 실행될 수 없을 때, FALSE를 반환하게 되었습니다.

예제

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.</p>
</body>
</html>

<?php

ob_end_flush
();

?>

위 예제의 출력:

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

참고


Output Control 함수 목록
PHP Manual