현재 위치: > 최신 기사 목록> stream_get_filters 및 stream_filter_remove의 공동 사용 예

stream_get_filters 및 stream_filter_remove의 공동 사용 예

gitbox 2025-05-28

PHP에서 Stream은 파일, 네트워크, 장치 등의 입력 및 출력을 처리하는 메커니즘입니다. PHP는 스트림에서 데이터를 필터링하고 수정할 수있는 강력한 스트림 필터를 제공합니다. stream_get_filtersstream_filter_remove 는 일반적으로 사용되는 스트림 필터링 기능입니다. 이 기사는이 두 기능을 결합하여 스트림 필터링을 구현하는 방법을 자세히 설명합니다.

1. 흐름 필터 란 무엇입니까?

스트림 필터는 스트림에 적용되는 메커니즘으로 스트림 데이터를 수정, 변환 및 필터링 할 수 있습니다. 예를 들어 스트림 필터를 사용하여 파일 스트림에서 암호화, 해독, 압축, 압축 압축 및 기타 작업을 수행 할 수 있습니다.

PHP는 다양한 내장 스트림 필터를 제공하며 사용자는 스트림 필터를 사용자 정의 할 수도 있습니다. String.toupper 와 같은 공통 필터는 스트림의 데이터를 대문자로 변환 할 수 있습니다.

2. stream_get_filters 함수

stream_get_filters () 함수는 PHP에서 사용 가능한 모든 스트림 필터 목록을 반환합니다. 이 함수는 모든 필터 이름을 포함하는 배열을 반환합니다.

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

이 코드 실행에는 사용 가능한 모든 필터가 나열됩니다. 이 목록을 통해 모든 PHP 지원 필터를보고 필요에 적합한 필터를 결정할 수 있습니다.

3. stream_filter_remove 함수

stream_filter_remove () 함수는 스트림에 적용된 필터를 제거하는 데 사용됩니다. 즉, 스트림을 처리하기 위해 더 이상 필터가 필요하지 않으면이 기능을 사용하여 제거 할 수 있습니다. 이 작업은 흐름을 닫지 않지만 흐름 필터링을 중지합니다.

 $filter = stream_filter_append($stream, 'string.toupper');
stream_filter_remove($filter);

이 코드에서 Stream_Filter_Append ()는 데이터를 대문자로 변환하는 Stream $ Stream 에 필터를 추가 한 다음 Stream_Filter_Remove () 를 통해이 필터를 제거하는 데 사용됩니다.

4. 실제 예 : stream_get_filtersstream_filter_remove를 결합합니다

텍스트 스트림이 있고 스트림에 필터를 추가하여 모든 텍스트를 대문자로 변환하려고한다고 가정합니다. 특정 조건 에서이 필터를 제거하고 원본 텍스트를 복원하십시오.

샘플 코드

 <?php
// 텍스트 스트림을 엽니 다
$stream = fopen('php://temp', 'r+');
fwrite($stream, "Hello World! This is a test message.");
rewind($stream);

// 사용 가능한 모든 필터를 얻으십시오
$filters = stream_get_filters();
echo "Available filters:\n";
print_r($filters);

// 필터를 적용하십시오,콘텐츠를 대문자로 변환합니다
$filter = stream_filter_append($stream, 'string.toupper');

// 스트림에서 데이터를 읽고 출력합니다(이미 자본에 있습니다)
rewind($stream);
echo "After applying 'string.toupper' filter:\n";
echo fread($stream); // 산출: HELLO WORLD! THIS IS A TEST MESSAGE.

// 필터를 제거하십시오
stream_filter_remove($filter);

// 重新스트림에서 데이터를 읽고 출력합니다(원본 텍스트를 복원하십시오)
rewind($stream);
echo "\nAfter removing the filter:\n";
echo fread($stream); // 산출: Hello World! This is a test message.
?>

코드 구문 분석

  1. 스트림 열기 : fopen ( 'php : // temp', 'r+')을 통해 임시 메모리 스트림을 열고 텍스트 데이터를 작성합니다.

  2. 사용 가능한 모든 필터를 가져옵니다 : stream_get_filters ()를 사용하여 등록 된 필터를 모두 가져 와서 인쇄하십시오. 이 목록을 통해 적용하려는 필터를 선택할 수 있습니다.

  3. 필터 적용 : stream_filter_append () 함수를 사용하여 String.toupper 필터를 스트림에 추가하여 모든 텍스트를 대문자로 변환합니다.

  4. 필터 제거 : Stream_Filter_Remove ()를 사용하여 스트림의 데이터가 원래 상태로 돌아 오도록 필터를 제거하십시오.

  5. 출력 데이터 : 필터를 적용하고 제거한 후 Fread ()를 통해 스트림에서 데이터를 출력하여 필터 효과의 변경 사항을 보여줍니다.

코드 출력 예 :

 Available filters:
Array
(
    [0] => string.toupper
    [1] => convert.iconv.utf-8.utf-16
    [2] => convert.iconv.utf-16.utf-8
    [3] => string.rot13
    [4] => string.lower
    ...
)

After applying 'string.toupper' filter:
HELLO WORLD! THIS IS A TEST MESSAGE.

After removing the filter:
Hello World! This is a test message.

설명하다

  1. stream_get_filters () 함수는 스트림 데이터를 처리하는 데 직접 사용할 수있는 모든 필터를 반환합니다.

  2. String.toupper 필터는 스트림의 모든 것을 대문자로 변환합니다.

  3. stream_filter_remove () 함수가 필터를 제거한 후 스트림의 내용은 원래 상태로 돌아갑니다.

5. 요약

stream_get_filtersstream_filter_remove 를 통해 흐름 데이터 프로세스를 유연하게 제어 할 수 있습니다. 이 두 기능은 동적으로 변화하는 유량 필터링이 필요한 시나리오에서 매우 유용합니다. 런타임에 다른 필터를 선택하거나 특정 조건에서 제거하여 원래 데이터를 복원 할 수도 있습니다.