ob_list_handlers
output_add_rewrite_var
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_callback` 이 `FALSE`를 반환하면, 원 입력이 브라우저로 전송됩니다.

  `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>

### 참고

- ob_get_contents() - 출력 버퍼의 내용을 반환
- ob_end_clean() - 출력 버퍼를 지우고 출력 버퍼링을 종료
- ob_end_flush() - 출력 버퍼를 전송하고 출력 버퍼링을 종료
- ob_implict_flush()
- ob_gzhandler() - gzip 출력 버퍼를 위한 ob_start 콜백 함수
- ob_iconv_handler() - Convert character encoding as output buffer handler
- mb_output_handler() - Callback function converts character encoding in output buffer
- ob_tidyhandler() - ob_start callback function to repair the buffer

ob_list_handlers
output_add_rewrite_var
Output Control 함수 목록
PHP Manual