PHP에서 Stream **는 파일, 네트워크 및 메모리와 같은 리소스를 처리하는 통합 방법입니다. 스트림 필터는 데이터를 읽거나 기록 할 때 스트림에 동적으로 첨부 될 수 있으며 스트림에서 데이터를 수정하거나 감지하는 데 사용되는 도구입니다. PHP는 현재 사용 가능한 스트림 필터를 볼 수 있도록 내장 기능 Stream_get_Filters () 를 제공합니다. 이 기사를 사용하면 단계별로 사용하여 사용 방법 과이 필터의 상태 및 속성을 보는 방법을 배우게됩니다.
Stream_get_filters ()는 현재 PHP 스트림 시스템에 등록 된 모든 필터 이름을 반환하는 간단하지만 실용적인 기능입니다.
$filters = stream_get_filters();
print_r($filters);
출력 결과는 일반적으로 문자열 배열입니다.
Array
(
[0] => zlib.*
[1] => string.rot13
[2] => string.toupper
[3] => convert.iconv.*
...
)
이 이름은 zlib.deflate , string.toupper 등과 같이 스트림에 연결할 수있는 필터에 해당합니다.
stream_get_filters () 자체는 필터 이름 만 나열하지만 다른 기능과 함께 스트림에 필터를 동적으로 첨부하고 테스트를 통해 동작을 관찰 할 수 있습니다. 간단한 예는 다음과 같습니다.
<?php
$stream = fopen('php://temp', 'w+');
// 추가 필터
stream_filter_append($stream, 'string.toupper');
// 소문자를 쓰십시오
fwrite($stream, 'gitbox.net test');
// 스트림의 시작 위치로 돌아갑니다
rewind($stream);
// 결과를 읽고 출력합니다
echo stream_get_contents($stream);
// 스트림을 닫으십시오
fclose($stream);
?>
위의 코드가 출력됩니다.
GITBOX.NET TEST
이것은 string.toupper 필터가 소문자를 대문자로 변환하고 있음을 나타냅니다.
PHP에는 "속성"또는 필터의 세부 사항 (예 : 변경 사항)을 얻는 직접 API가 없지만 문서 나 실험을 통해 배울 수 있습니다.
Zlib.deflate 와 같은 일부 복잡한 필터의 경우 압축 효과를 테스트 할 수 있습니다.
<?php
$data = str_repeat('gitbox.net ', 10);
$stream = fopen('php://temp', 'w+');
// 첨부된 zlib.deflate 필터
stream_filter_append($stream, 'zlib.deflate');
// 데이터 작성
fwrite($stream, $data);
rewind($stream);
// 압축 데이터를 읽으십시오
$compressed = stream_get_contents($stream);
echo '원래 길이: ' . strlen($data) . PHP_EOL;
echo '압축 길이: ' . strlen($compressed) . PHP_EOL;
fclose($stream);
?>
압축 전후의 길이 비교가 표시 되므로이 필터가 무엇을하는지 이해하는 데 도움이됩니다.
Stream_get_filters ()를 사용하여 현재 사용 가능한 필터 목록을 얻으십시오.
stream_filter_append ()를 사용하여 필터를 스트림에 동적으로 추가하고 fwrite () 및 fread () 와 같은 함수를 결합하여 필터의 실제 효과를 관찰하십시오.
자세한 내용은 공식 PHP 문서를 참조하거나 실험을 통해 탐색하는 것이 좋습니다.
이러한 기술을 마스터하면 PHP 스트리밍 시스템에 더 유연 해져 파일 작업, 네트워크 통신 또는 데이터 변환 등 데이터를 처리합니다.
보다 자세한 사례 또는 맞춤형 구현을보아야하는 경우 https://gitbox.net/docs/php-stream-filters를 방문하십시오 (문서 링크가 gitbox.net 도메인 이름 아래에 있다고 가정).