현재 위치: > 최신 기사 목록> stream_get_filters를 사용하고 결합하여 고려하는 방법

stream_get_filters를 사용하고 결합하여 고려하는 방법

gitbox 2025-05-19

PHP에서 스트림 필터는 파일 스트림 또는 기타 유형의 데이터 스트림을 처리하는 매우 강력하고 유연한 방법을 제공합니다. 흐름 필터를 통해 입력 데이터를 실시간으로 처리하고 수정할 수 있습니다. 이 기사에서는 스트림 필터의 기능을 구현하기 위해 Fopen 과 결합 된 Stream_get_filters 함수를 사용하는 방법을 자세히 살펴 봅니다.

흐름 필터 란 무엇입니까?

스트림 필터는 PHP가 파일 스트림 또는 기타 스트림 데이터를 처리하기 위해 제공하는 메커니즘입니다. 스트림을 읽거나 쓸 때 데이터를 필터링 할 수 있습니다. 예를 들어 스트림 필터를 사용하여 데이터 압축, 암호화, 문자 인코딩 변환 등을 구현할 수 있습니다.

PHP는 다음과 같은 다양한 내장 스트림 필터를 제공합니다.

  • zlib.inflate (감압)

  • zlib.deflate (압축)

  • string.toupper (텍스트 변환 대문자로 변환)

stream_get_filters 기능 소개

stream_get_filters는 PHP에서 현재 사용 가능한 스트림 필터 목록을 반환하는 매우 유용한 기능입니다. 이를 사용하여 후속 코드에서 사용하기 위해 PHP에로드 된 필터를 확인할 수 있습니다.

기능 서명 :

 array stream_get_filters ( void )

매개 변수 :

이 함수에는 매개 변수가 없습니다.

반품 값 :

사용 가능한 모든 스트림 필터가 포함 된 배열을 반환합니다.

FOPEN 기능은 유량 필터와 함께 사용됩니다

Fopen은 PHP에서 파일 스트림을 열는 기능입니다. 읽기, 쓰기 또는 추가와 같은 파일을 열도록 다양한 모드를 지정할 수 있습니다. 파일을 열면 스트림 필터를 Stream_Filter_Append 함수를 통해 파일 스트림에 첨부하여 파일 데이터를 실시간으로 처리 할 수 ​​있습니다.

FOPEN 기능 서명 :

 resource fopen ( string $filename , string $mode )

stream_filter_append 함수 서명 :

 resource stream_filter_append ( resource $stream , string $filtername , int $read_write [, mixed $params ] )

예 : stream_get_filtersfopen을 사용하여 스트림 필터 구현

아래에서는 간단한 예제와 함께 스트림 필터와 함께 Stream_get_filters를 사용하고 Fopen을 사용하는 방법을 보여줍니다. String.toupper 스트림 필터를 통해 파일의 모든 텍스트를 대문자로 변환합니다.

샘플 코드 :

 <?php
// 사용 가능한 모든 스트림 필터를 얻으십시오
$filters = stream_get_filters();
echo "사용 가능한 유량 필터:\n";
print_r($filters);

// 파일을 엽니 다
$filename = "test.txt";
$file = fopen($filename, 'r+');

// 할 것이다 'string.toupper' 스트림 필터는 파일 스트림에 적용됩니다
stream_filter_append($file, 'string.toupper');

// 파일을 읽고 내용을 출력하십시오(内容할 것이다被转换为大写)
while (($line = fgets($file)) !== false) {
    echo $line;
}

// 파일 스트림을 닫습니다
fclose($file);
?>

코드 구문 분석 :

  1. 먼저 Stream_get_Filters를 사용하여 사용 가능한 모든 스트림 필터를 가져 와서 출력하십시오.

  2. 다음으로 Fopen을 통해 파일 test.txt를 열고 R+ 모드로 읽고 쓰십시오.

  3. stream_filter_append 함수를 사용하여 String.toupper 스트림 필터를 파일 스트림에 적용합니다. 즉, 파일에서 읽은 내용은 자동으로 대문자로 변환됩니다.

  4. 그런 다음 FGETS 함수를 사용하여 파일 콘텐츠를 라인별로 읽고 변환 된 자본 컨텐츠를 화면에 출력합니다.

  5. 마지막으로 fclose를 통해 파일 스트림을 닫습니다.

실행 결과 :

test.txt 파일의 내용이 다음과 같습니다.

 Hello world!
This is a test.

그러면 프로그램 출력이 다음과 같습니다.

 HELLO WORLD!
THIS IS A TEST.

URL 흐름 필터와 결합

PHP는 파일 스트리밍 외에도 URL의 스트림 필터링을 지원합니다. 예를 들어 스트림 필터를 사용하여 HTTP 요청 된 데이터를 처리 할 수 ​​있습니다. 다음은 FOPEN을 통해 URL을 열고 스트림 필터와 함께 처리하는 방법을 보여주는 간단한 예입니다.

샘플 코드 :

 <?php
// 사용 fopen 열려 있는 URL,사용 gitbox.net 도메인 이름으로
$url = "http://gitbox.net/path/to/resource";
$stream = fopen($url, 'r');

// 할 것이다 'string.toupper' 흐름 필터가 적용됩니다 URL 데이터 흐름
stream_filter_append($stream, 'string.toupper');

// 데이터를 읽고 출력합니다
while (($line = fgets($stream)) !== false) {
    echo $line;
}

// 스트림을 닫으십시오
fclose($stream);
?>

코드 구문 분석 :

  1. 지정된 URL ( gitbox.net 도메인 이름)을 엽니 다.

  2. URL에서 얻은 데이터가 출력시 대문자로 변환되도록 String.toupper 스트림 필터를 URL 데이터 스트림에 적용합니다.

  3. 라인별로 데이터를 읽고 출력하십시오.

  4. 마지막으로 스트림을 닫으십시오.

참고 :

  • 스트림 필터는 파일뿐만 아니라 네트워크 흐름, 파이프 라인 흐름 등에 사용될 수 있습니다.

  • 일부 필터 (예 : 압축 및 암호화)가 추가 오버 헤드를 추가 할 수 있으므로 스트림 필터를 사용할 때 성능에 특별한주의를 기울입니다.

  • 보다 복잡한 처리를 위해 여러 필터를 결합 할 수 있습니다. 예를 들어 먼저 압축 한 다음 암호화합니다.

요약

이 기사를 통해 스트림 필터를 구현하기 위해 fopen 과 결합 된 stream_get_filters 기능을 사용하는 방법을 배웠습니다. 스트림 필터는 파일 또는 네트워크 데이터를 실시간으로 처리하는 데 도움이되는 매우 강력하고 유연한 도구입니다. 간단한 텍스트 변환이든 복잡한 데이터 처리이든 스트림 필터는 매우 편리한 솔루션을 제공 할 수 있습니다.