현재 위치: > 최신 기사 목록> Stream_get_filters 및 Stream_Filter_Append를 사용하는 방법

Stream_get_filters 및 Stream_Filter_Append를 사용하는 방법

gitbox 2025-05-28

PHP에서 Stream은 파일, 네트워크 연결 또는 기타 입력/출력 리소스를 처리하는 핵심 개념입니다. 스트림 필터는 스트림에서 데이터를 처리하고 읽기 전에 데이터를 수정할 수있는 스트림에 연결된 일부 기능 모듈입니다. stream_get_filtersstream_filter_append 는 스트림 필터를 처리하는 PHP의 두 가지 중요한 기능입니다.

이 기사는이 두 기능을 사용하는 방법과 스트리밍 데이터 필터링을 구현하기 위해 함께 사용하는 방법을 자세히 설명합니다.

stream_get_filters 란 무엇입니까?

stream_get_filters 함수는 현재 모든 스트림 필터를 사용할 수있는 데 사용됩니다. 스트림 필터는 스트림에서 스트림 또는 프로세스 데이터의 동작을 변경할 수있는 사전 정의 된 기능입니다. stream_get_filters를 호출하여 시스템의 등록 된 스트림 필터를 볼 수 있습니다.

샘플 코드 :

 $filters = stream_get_filters();
print_r($filters);

이 코드는 사용 가능한 모든 스트림 필터를 출력합니다. 예를 들어, string.toupper , convert.base64-encode 등과 같은 필터가 표시 될 수 있습니다. 각 필터는 특정 데이터 변환 또는 작동에 해당합니다.

stream_filter_append 란 무엇입니까?

stream_filter_append 함수는 스트림에 필터를 추가하는 데 사용됩니다. Stream_Filter_Prepend 와 달리 Stream_Filter_Append는 스트림 끝에서 필터를 추가하므로 스트림의 출력 데이터가 반환되기 전에 데이터를 처리합니다. Stream_Filter_Append를 사용하여 사용자 정의 스트림 필터를 연결하거나 시스템 제공 필터를 사용할 수 있습니다.

샘플 코드 :

 $fp = fopen("php://temp", "r+");
stream_filter_append($fp, "string.toupper");

fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // 산출: HELLO WORLD
fclose($fp);

위의 예에서는 Stream_Filter_Append를 사용하여 String.toupper 필터를 파일 스트림에 추가하여 서면 내용이 자동으로 대문자 문자로 변환되도록합니다.

stream_get_filtersstream_filter_append를 조합하여 사용하는 방법은 무엇입니까?

이 두 기능을 결합하면 먼저 사용 가능한 필터를보고 스트림에 적용 할 적절한 필터를 선택할 수 있습니다. 먼저 Stream_get_Filters를 사용하여 모든 필터를보고 스트림에 필터를 스트림 에 연결하여 스트림 데이터가 처리되는 방식을 변경할 수 있습니다.

예 : 함께 사용합니다

파일의 내용을 읽고 모든 텍스트를 대문자로 변환하려고한다고 가정하십시오. Stream_get_Filters를 사용하여 사용 가능한 필터를보고 적합한 필터를 선택한 다음 Stream_Filter_Append를 사용하여 파일 스트림을 필터링합니다.

 // 사용 가능한 필터를 봅니다
$filters = stream_get_filters();
print_r($filters);

// 올바른 필터를 선택하십시오(string.toupper)스트림에 첨부됩니다
$fp = fopen("sample.txt", "r+");
stream_filter_append($fp, "string.toupper");

// 파일 내용을 작성하고 읽습니다
fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // 산출: HELLO WORLD
fclose($fp);

사용자 정의 필터를 사용하십시오

PHP를 통해 시스템이 제공하는 필터 외에도 사용자는 사용자 정의 스트림 필터를 만들 수 있습니다. 사용자 정의 필터를 사용하려면 stream_filter_append를 사용 하여이 필터를 연결할 수 있습니다. 다음은 텍스트의 모든 소문자를 대문자로 변환하는 방법을 보여주는 간단한 사용자 정의 필터 예제입니다.

사용자 정의 필터 코드 예 :

 // 사용자 정의 필터를 만듭니다
class UppercaseFilter extends php_user_filter {
    public function filter($in, $out) {
        while ($bucket = stream_bucket_make_writeable($in)) {
            // 자본으로 전환하십시오
            $bucket->data = strtoupper($bucket->data);
            stream_bucket_append($out, $bucket);
        }
        return PSFS_PASS_ON;
    }
}

// 레지스터 필터
stream_filter_register("uppercase", "UppercaseFilter");

// 사용자 정의 필터를 사용하십시오
$fp = fopen("php://temp", "r+");
stream_filter_append($fp, "uppercase");

fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // 산출: HELLO WORLD
fclose($fp);

이 예에서는 입력 스트림의 모든 소문자를 대문자로 변환하는 사용자 정의 스트림 필터 인 대문자 필터를 만듭니다.

결론

stream_get_filtersstream_filter_append 는 PHP에서 강력한 스트림 필터 메커니즘의 핵심 기능입니다. 이러한 기능을 사용하면 스트림 필터를 쉽게 관리하고 스트림의 데이터를 실시간으로 처리 할 수 ​​있습니다. 이러한 기능을 함께 사용하면 다양한 데이터 스트림을 유연하게 처리하고 다양한 시나리오의 요구를 충족시키는 데 도움이됩니다.

실제로 사용 가능한 스트림 필터를보고, 가장 적합한 필터를 선택하거나, 필터를 사용자 정의하여보다 복잡한 데이터 처리 요구를 달성 할 수 있습니다.

이 기사가 stream_get_filtersstream_filter_append 함수를 이해하고 사용하는 데 도움이되기를 바랍니다.