PHP에서 스트림 필터는 데이터가 출입되거나 출발 할 때 데이터를 처리하는 데 사용됩니다. PHP는 입력 및 출력 스트림에서보다 세 심하게 작동 할 수있는 다양한 내장 스트림 필터를 제공합니다. stream_get_filters () 함수는 사용 가능한 모든 스트림 필터를 얻는 데 중요한 도구입니다. 이 기사에서는 Stream_get_filters () 함수를 사용하여 특정 유형의 스트림 필터를 필터링하고 얻는 방법을 설명합니다.
스트림 필터는 PHP 스트림 (예 : 파일 스트림, 네트워크 스트림 등)을 처리하는 메커니즘입니다. 스트림 필터를 통해 데이터가 소스 (예 : 파일, 네트워크)로 흐르거나 출발 할 때 인코딩, 암호화, 해독, 압축, 압축 압축 및 기타 작업을 인코딩, 암호를 인코딩 할 수 있습니다.
PHP는 많은 내장 스트림 필터를 제공하며 개발자가 스트림 필터를 사용자 정의 할 수 있습니다. stream_get_filters () 함수를 통해 등록 된 스트림 필터를 볼 수 있도록 올바른 필터를 선택할 수 있습니다.
stream_get_filters () 함수는 등록 된 모든 스트림 필터의 목록을 반환합니다. 현재 사용 가능한 스트림 필터를보고 특정 요구에 따라 적절한 필터를 쉽게 선택할 수 있습니다.
array stream_get_filters ( void )
이 기능에는 매개 변수가 없으며 모든 필터 이름을 포함하는 배열을 반환합니다.
<?php
// 사용 가능한 모든 스트림 필터를 얻으십시오
$filters = stream_get_filters();
// 모든 필터를 출력하십시오
echo "모든 흐름 필터:\n";
foreach ($filters as $filter) {
echo $filter . "\n";
}
?>
위의 예에서는 Stream_get_filters ()를 호출하여 모든 스트림 필터를 가져 와서 각 필터의 이름을 반복하고 출력합니다.
일반적으로 요구에 따라 특정 유형의 유량 필터를 걸러냅니다. 압축 필터, 암호화 필터 등과 같은 필터 이름을 기반으로 목적을 결정할 수 있습니다.
<?php
// 获取모든 흐름 필터
$filters = stream_get_filters();
// 모든 암호화 관련 필터를 필터링하십시오
$encryption_filters = array_filter($filters, function($filter) {
return strpos($filter, 'encrypt') !== false;
});
// 모든 암호화 관련 스트림 필터를 출력하십시오
echo "암호화 관련 스트림 필터:\n";
foreach ($encryption_filters as $filter) {
echo $filter . "\n";
}
?>
이 예에서는 array_filter () 함수를 사용하여 스트림 필터를 필터링하고 "Encrypt"문자열이라는 이름으로 필터를 찾습니다. 다른 요구에 따라 필터 기준을 수정할 수 있습니다.
스트림 필터를 얻은 후 Stream_Filter_Append () 또는 Stream_Filter_Prepend () 함수를 사용하여 이러한 필터를 파일 스트림 또는 네트워크 스트림에 적용 할 수 있습니다.
<?php
// 압축 파일을 엽니 다
$fp = fopen('php://memory', 'r+');
$stream = fopen('http://gitbox.net/somefile.gz', 'r');
// 스트림에 감압 필터를 추가하십시오
stream_filter_append($stream, 'zlib.inflate');
// 압축 압축 함량을 읽으십시오
while ($line = fgets($stream)) {
echo $line;
}
fclose($stream);
?>
이 예에서는 zlib.inflate 스트림 필터를 사용하여 gitbox.net 에서 얻은 파일 내용을 압축합니다. stream_filter_append ()는 스트림 필터를 스트림에 추가하는 데 사용됩니다.
다음은 몇 가지 일반적인 흐름 필터와 간단한 설명입니다.
Zlib.deflate : 데이터 스트림을 압축합니다.
Zlib.inflate : 압축 데이터 스트림을 압축합니다.
String.ROT13 : ROT13 데이터 스트림 인코딩.
Convert.iconv.* : 문자 인코딩 변환에 사용됩니다.
http.* : http.request 및 http.response 와 같은 HTTP 프로토콜과 관련된 필터.
stream_get_filters () 함수는 개발자가 현재 사용 가능한 스트림 필터를 이해하고 적절한 필터를 통해 요구를 충족시키는 필터를 얻는 데 도움이되는 강력한 도구입니다. stream_filter_append () 및 stream_filter_prepend () 함수를 결합하면 이러한 필터를 다양한 스트림 유형에 적용하여 압축, 암호화 및 데이터 스트림 인코딩과 같은 작업을 처리 할 수 있습니다.