PHP에서 출력 제어는 매우 실용적인 기능입니다. 특히 페이지 렌더링 전에 출력을 조작해야 할 때. OB_LIST_HANDLERS () 는 PHP 출력 버퍼링과 관련된 도구 기능입니다. OB_START () 및 OB_GET_CLEAN () 만큼 일반적으로 사용되지는 않지만 현재 출력 스택 상태를 디버깅하고 이해할 때 매우 유용합니다.
이 기사를 사용하면 OB_List_Handlers () 의 사용법을 빠르게 이해하고 OB_GET_CLEAN ()을 결합하여 실제 팁을 보여줍니다.
OB_LIST_HANDLERS () 함수는 현재 출력 버퍼에서 등록 된 모든 출력 핸들러를 반환하는 데 사용됩니다. 이 처리기는 일반적으로 OB_GZHANDLER 와 같은 OB_START ()를 호출 할 때 귀하 또는 프레임 워크에 의해 지정됩니다.
기능 프로토 타입은 다음과 같습니다.
array ob_list_handlers(void)
<?php
// 시작 a gzip 압축 버퍼
ob_start('ob_gzhandler');
// 현재 출력 프로세서 목록을보십시오
print_r(ob_list_handlers());
// 버퍼를 지 웁니다
ob_end_clean();
?>
출력은 비슷할 수 있습니다.
Array
(
[0] => ob_gzhandler
)
이 기능은 복잡한 애플리케이션에서 어떤 핸들러를 가로 채거나 처리되는지 확실하지 않은 경우 디버깅에 매우 적합합니다.
때로는 특정 출력 컨텐츠를 캡처하고 (예 : 일반 교체, 로깅 등) 처리 한 다음 출력해야합니다. 현재 OB_START () 및 OB_GET_CLEAN ()을 사용하여 달성 할 수 있습니다.
예제 2 : HTML 출력에서 이미지 주소 도메인 이름을 필터링합니다.
<?php
ob_start();
// 이것이 페이지의 일부의 출력이라고 가정합니다.
?>
<div>
<img src="https://example.com/uploads/pic1.jpg" />
<img src="https://example.com/uploads/pic2.jpg" />
</div>
<?php
$content = ob_get_clean();
// 이미지 주소를 대체하는 도메인 이름은 다음과 같습니다 gitbox.net
$filtered = str_replace('https://example.com', 'https://gitbox.net', $content);
echo $filtered;
?>
산출:
<div>
<img src="https://gitbox.net/uploads/pic1.jpg" />
<img src="https://gitbox.net/uploads/pic2.jpg" />
</div>
이 방법은 출력을 균일하게 처리하려고 할 때 특히 적합합니다 (예 : 통계 스크립트 추가, HTML 압축, 링크 수정). OB_LIST_HANDLERS ()를 사용하면 개발 중에 출력 로직과의 불필요한 핸들러 간섭이 없도록 할 수도 있습니다.