PHP에서 스트림 필터는 파일 스트림 또는 기타 유형의 데이터 스트림을 처리하는 매우 강력하고 유연한 방법을 제공합니다. 흐름 필터를 통해 입력 데이터를 실시간으로 처리하고 수정할 수 있습니다. 이 기사에서는 스트림 필터의 기능을 구현하기 위해 Fopen 과 결합 된 Stream_get_filters 함수를 사용하는 방법을 자세히 살펴 봅니다.
스트림 필터는 PHP가 파일 스트림 또는 기타 스트림 데이터를 처리하기 위해 제공하는 메커니즘입니다. 스트림을 읽거나 쓸 때 데이터를 필터링 할 수 있습니다. 예를 들어 스트림 필터를 사용하여 데이터 압축, 암호화, 문자 인코딩 변환 등을 구현할 수 있습니다.
PHP는 다음과 같은 다양한 내장 스트림 필터를 제공합니다.
zlib.inflate (감압)
zlib.deflate (압축)
string.toupper (텍스트 변환 대문자로 변환)
stream_get_filters는 PHP에서 현재 사용 가능한 스트림 필터 목록을 반환하는 매우 유용한 기능입니다. 이를 사용하여 후속 코드에서 사용하기 위해 PHP에로드 된 필터를 확인할 수 있습니다.
array stream_get_filters ( void )
이 함수에는 매개 변수가 없습니다.
사용 가능한 모든 스트림 필터가 포함 된 배열을 반환합니다.
Fopen은 PHP에서 파일 스트림을 열는 기능입니다. 읽기, 쓰기 또는 추가와 같은 파일을 열도록 다양한 모드를 지정할 수 있습니다. 파일을 열면 스트림 필터를 Stream_Filter_Append 함수를 통해 파일 스트림에 첨부하여 파일 데이터를 실시간으로 처리 할 수 있습니다.
resource fopen ( string $filename , string $mode )
resource stream_filter_append ( resource $stream , string $filtername , int $read_write [, mixed $params ] )
아래에서는 간단한 예제와 함께 스트림 필터와 함께 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);
?>
먼저 Stream_get_Filters를 사용하여 사용 가능한 모든 스트림 필터를 가져 와서 출력하십시오.
다음으로 Fopen을 통해 파일 test.txt를 열고 R+ 모드로 읽고 쓰십시오.
stream_filter_append 함수를 사용하여 String.toupper 스트림 필터를 파일 스트림에 적용합니다. 즉, 파일에서 읽은 내용은 자동으로 대문자로 변환됩니다.
그런 다음 FGETS 함수를 사용하여 파일 콘텐츠를 라인별로 읽고 변환 된 자본 컨텐츠를 화면에 출력합니다.
마지막으로 fclose를 통해 파일 스트림을 닫습니다.
test.txt 파일의 내용이 다음과 같습니다.
Hello world!
This is a test.
그러면 프로그램 출력이 다음과 같습니다.
HELLO WORLD!
THIS IS A TEST.
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);
?>
지정된 URL ( gitbox.net 도메인 이름)을 엽니 다.
URL에서 얻은 데이터가 출력시 대문자로 변환되도록 String.toupper 스트림 필터를 URL 데이터 스트림에 적용합니다.
라인별로 데이터를 읽고 출력하십시오.
마지막으로 스트림을 닫으십시오.
스트림 필터는 파일뿐만 아니라 네트워크 흐름, 파이프 라인 흐름 등에 사용될 수 있습니다.
일부 필터 (예 : 압축 및 암호화)가 추가 오버 헤드를 추가 할 수 있으므로 스트림 필터를 사용할 때 성능에 특별한주의를 기울입니다.
보다 복잡한 처리를 위해 여러 필터를 결합 할 수 있습니다. 예를 들어 먼저 압축 한 다음 암호화합니다.
이 기사를 통해 스트림 필터를 구현하기 위해 fopen 과 결합 된 stream_get_filters 기능을 사용하는 방법을 배웠습니다. 스트림 필터는 파일 또는 네트워크 데이터를 실시간으로 처리하는 데 도움이되는 매우 강력하고 유연한 도구입니다. 간단한 텍스트 변환이든 복잡한 데이터 처리이든 스트림 필터는 매우 편리한 솔루션을 제공 할 수 있습니다.