ob_start

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_start — Turn on output buffering


설명

ob_start(callable $callback = null, int $chunk_size = 0, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS): bool

이 함수는 출력 버퍼링을 켭니다. 출력 버퍼링이 활성화되어 있는 동안에는 스크립트(헤더 제외)에서 출력이 전송되지 않고 대신 출력이 내부 버퍼에 저장됩니다.

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

경고 일부 웹 서버(예: Apache)는 콜백 함수를 호출할 때 스크립트의 작업 디렉토리를 변경합니다. 예를 들어 다시 변경할 수 있습니다. 콜백 함수의 chdir(dirname($_SERVER['SCRIPT_FILENAME']))

출력 버퍼는 스택 가능합니다. 즉, 다른 ob_start()가 활성화되어 있는 동안 ob_start()를 호출할 수 있습니다. ob_end_flush()를 적절한 횟수만큼 호출했는지 확인하십시오. 여러 출력 콜백 함수가 활성화된 경우 출력은 중첩 순서로 각 함수를 통해 순차적으로 필터링됩니다.

스크립트가 끝날 때 출력 버퍼링이 여전히 활성화되어 있으면 PHP는 자동으로 내용을 출력합니다.


매개변수

callback
선택적 callback 함수를 지정할 수 있습니다. 이 함수는 문자열을 매개변수로 사용하며 문자열을 반환해야 합니다. 함수는 출력 버퍼가 플러시(전송)되거나 정리(ob_flush(), ob_clean() 또는 유사한 함수로) 또는 출력 버퍼가 요청 끝에서 브라우저로 플러시될 때 호출됩니다. callback이 호출되면 출력 버퍼의 내용을 매개변수로 수신하고 결과적으로 새 출력 버퍼를 반환할 것으로 예상되며, 이는 브라우저로 전송됩니다. callback이 호출 가능한 함수가 아닌 경우 이 함수는 false를 반환합니다. 다음은 콜백 서명입니다.

handler(string $buffer, int $phase = ?): string

buffer
출력 버퍼의 내용입니다.
phase
PHP_OUTPUT_HANDLER_* constants의 비트마스크.

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

null 값을 전달하여 callback 매개변수를 무시할 수 있습니다.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush()ob_start()는 콜백 함수에서 호출할 수 없습니다. 콜백 함수에서 호출하면 동작이 정의되지 않습니다. 버퍼의 내용을 삭제하려면 콜백 함수에서 ""(null string)를 반환합니다. 콜백 함수에서 print_r($expression, true) 또는 Highlight_file($filename, true)과 같은 출력 버퍼링 함수를 사용하여 함수를 호출할 수도 없습니다.

메모: ob_gzhandler() 함수는 압축된 웹 페이지를 지원하는 웹 브라우저에 gz로 인코딩된 데이터를 쉽게 보내기 위해 존재합니다. ob_gzhandler()는 브라우저가 수락할 콘텐츠 인코딩 유형을 결정하고 그에 따라 출력을 반환합니다.

chunk_size
선택적 매개변수 chunk_size가 전달되면 버퍼의 길이가 chunk_size와 같거나 초과하도록 하는 출력 호출 후에 버퍼가 플러시됩니다. 기본값 0은 출력 버퍼가 닫힐 때만 출력 함수가 호출됨을 의미합니다.
flags
flags 매개변수는 출력 버퍼에서 수행할 수 있는 작업을 제어하는 ​​비트마스크입니다. 기본값은 PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE 또는 PHP_OUTPUT_HANDLER_STDFLAGS를 약어로 사용합니다.

각 플래그는 아래에 설명된 대로 기능 집합에 대한 액세스를 제어합니다.

Constant Functions
PHP_OUTPUT_HANDLER_CLEANABLE ob_clean(), ob_end_clean(), and ob_get_clean().
PHP_OUTPUT_HANDLER_FLUSHABLE ob_end_flush(), ob_flush(), and ob_get_flush().
PHP_OUTPUT_HANDLER_REMOVABLE ob_end_clean(), ob_end_flush(), and ob_get_flush().

반환 값

성공하면 true를, 실패하면 false를 반환합니다.


Examples

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

                  
<?php

function callback($buffer)
{
  // replace all the apples with 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>
                

예제 #2 지울 수 없는 출력 버퍼 만들기

                  
<?php

ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);

?>
                  
                

기타