현재 위치: > 최신 기사 목록> Stream_get_Filters를 통해 특정 유형의 필터가 지원되는지 확인하십시오.

Stream_get_Filters를 통해 특정 유형의 필터가 지원되는지 확인하십시오.

gitbox 2025-05-19

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