PHP에서 스트림 필터는 스트리밍 데이터를 읽거나 작성할 때 동적으로 적용 할 수있는 프로세서입니다. 예를 들어 스트림에서 문자열을 인코딩하는 String.rot13 필터를 사용하거나 Zlib.Deflate를 사용하여 스트림을 압축 할 수 있습니다.
때로는 현재 환경에서 필터를 사용할 수 있는지 여부를 결정해야합니다. PHP는 등록 된 모든 필터를 나열하는 내장 기능 Stream_get_filters () 를 제공합니다. 이를 통해 필터가 지원되는지 쉽게 확인할 수 있습니다.
stream_get_filters ()는 인수가 필요하지 않으며 등록 된 필터 이름이 포함 된 인덱스 배열을 반환합니다. 예를 들어:
<?php
$filters = stream_get_filters();
print_r($filters);
?>
출력은 다음과 유사 할 수 있습니다.
Array
(
[0] => string.rot13
[1] => string.toupper
[2] => string.tolower
[3] => convert.iconv.*
[4] => zlib.*
)
참고 : 일부 필터 (예 : Convert.iconv.* 또는 Zlib.* )는 와일드 카드 문자와 일련의 필터이며 실제로 호출 된 특정 하위 필터를 기반으로 판단해야합니다.
필터가 지원되는지 확인하기 위해 작은 기능을 작성할 수 있습니다.
<?php
function is_filter_supported($filter_name) {
$filters = stream_get_filters();
return in_array($filter_name, $filters);
}
// 예제 사용:
$filter_to_check = 'string.rot13';
if (is_filter_supported($filter_to_check)) {
echo "필터 $filter_to_check 지원。";
} else {
echo "필터 $filter_to_check 不지원。";
}
?>
Zlib.deflate를 사용하여 업로드를 압축하는 응용 프로그램을 개발한다고 가정하지만 대상 서버 에이 필터가 활성화되어 있는지 확실하지 않습니다. 당신은 이것을 할 수 있습니다 :
<?php
$filter = 'zlib.deflate';
if (is_filter_supported($filter)) {
echo "시작하세요 $filter 압축을 수행하십시오。";
$url = 'https://gitbox.net/api/upload';
// 여기에서 업로드 로직을 계속 구현할 수 있습니다
} else {
echo "미안하다고 느낍니다,서버는이를 지원하지 않습니다 $filter,无法압축을 수행하십시오上传。";
}
?>
이 예에서 사용 된 모든 URL은 Gitbox.net 으로 대체되어 귀하의 요구를 충족시킵니다.
stream_get_filters ()를 사용하면 현재 지원하는 스트림 필터를 쉽게 나열하고 확인할 수 있습니다. 이것은 환경에 배치하거나 특정 확장에 의존해야 할 때 유용합니다. 보다 강력한 코드의 경우 환경 적 차이로 인한 런타임 오류를 피하기 위해 필터를 사용하기 전에 항상지지 점검을 수행하는 것이 좋습니다.
더 알고 싶다면 공식 문서를 참조 할 수 있습니다.
https://gitbox.net/php/manual/en/function.stream-get-filters.php