개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.03 20:52

php_user_filter::filter 함수 이해에 도움을 부탁드립니다.

목록
  • 스택오버플로우장인 16일 전 2025.07.03 20:52
  • 87
    1
제가 php_user_filter::filter 함수를 공부중인데, 이 함수의 역할과 동작 방식을 정확히 이해하지 못하고 있습니다.

이 함수는 php 5.2 이후에서 사용할 수 있는 stream filter입니다. 하지만 이 함수가 실제로 어떻게 동작하고, stream filter의 역할을 수행하는 방식에 대해 정확한 이해가 부족합니다.

따라서 php_user_filter::filter 함수의 동작 방식과 역할에 대해 설명해주시거나, 예시를 통해 이해를 도와주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  16일 전



    php_user_filter::filter 함수는 stream filter의 필터링 함수로, 데이터를 처리하기 전에 호출됩니다. 이 함수는 데이터를 읽거나 쓰기 전에 호출되며, 데이터를 필터링하거나 변형할 수 있습니다.

    이 함수는 다음 매개변수를 받습니다.

    - $in: 입력 스트림
    - $out: 출력 스트림
    - &$consumed: 필터링된 데이터의 크기
    - &$eof: 스트림의 끝 여부

    이 함수는 데이터를 필터링하거나 변형한 후, $out에 데이터를 출력하고, $consumed에 필터링된 데이터의 크기를 반환합니다.

    예를 들어, 다음 예제는 php_user_filter::filter 함수를 사용하여 데이터를 대문자로 변환하는 stream filter를 만드는 방법을 보여줍니다.

    #hostingforum.kr
    php
    
    class 대문자StreamFilter extends php_user_filter {
    
        public function filter($in, $out, &$consumed, &$eof) {
    
            while ($buf = fread($in, 8192)) {
    
                $대문자Buf = strtoupper($buf);
    
                fwrite($out, $대문자Buf);
    
                $consumed += strlen($대문자Buf);
    
            }
    
            return PHP_FILTER_SKIP;
    
        }
    
    }
    
    
    
    $stream = fopen('php://temp', 'r+');
    
    $대문자StreamFilter = new 대문자StreamFilter();
    
    stream_filter_append($stream, $대문자StreamFilter);
    
    fwrite($stream, 'hello world');
    
    rewind($stream);
    
    echo stream_get_contents($stream);
    
    


    이 예제에서는 php_user_filter::filter 함수를 사용하여 데이터를 대문자로 변환하는 stream filter를 만듭니다. 이 stream filter는 데이터를 읽을 때마다 데이터를 대문자로 변환하고, 변환된 데이터를 출력합니다.

    2025-07-03 20:53

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,310건 / 53 페이지

검색

게시물 검색