현재 위치: > 최신 기사 목록> file_get_contents 오류를 피하기 위해 외부 파일을 읽기 전에 ctype_cntrl로 제어 문자를 확인하는 방법은 무엇입니까?

file_get_contents 오류를 피하기 위해 외부 파일을 읽기 전에 ctype_cntrl로 제어 문자를 확인하는 방법은 무엇입니까?

M66 2025-08-07
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// -------------------------------------------</span></span><span>
</span><span><span class="hljs-comment">// 외부 파일을 읽기 전에 사용하는 방법 ctype_cntrl 제어 문자를 점검하십시오,피하다 file_get_contents 오류가 발생했습니다?</span></span><span>
</span><span><span class="hljs-comment">// -------------------------------------------</span></span><span>

</span><span><span class="hljs-comment">// 존재하다 PHP 가운데,file_get_contents 파일 내용을 읽는 것이 일반적인 기능입니다,그러나 파일에 일부 제어 문자가 포함 된 경우,읽기 과정에서 예기치 않은 상황 또는 오류가 발생할 수 있습니다.。</span></span><span>
</span><span><span class="hljs-comment">// 为了피하다这种问题,可以존재하다读取文件前,먼저 사용하십시오 ctype_cntrl 함수 파일 컨텐츠에 제어 문자가 포함되어 있는지 확인합니다,따라서 프로세스 또는 필터,프로그램의 안정성을 확인하십시오。</span></span><span>

</span><span><span class="hljs-comment">// 제어 문자는 무엇입니까??</span></span><span>
</span><span><span class="hljs-comment">// 제어 문자는 ASCII 码가운데非打印字符,범위는 보통입니다 0x00~0x1F 그리고 0x7F,这些字符존재하다文本文件가운데通常不应该出现,또는 특별한 형식 로고。</span></span><span>

</span><span><span class="hljs-comment">// 사용 방법은 다음과 같습니다 ctype_cntrl 제어 문자를 감지하고 필터합니다,확실하게 하다 file_get_contents 정상적으로 읽으십시오:</span></span><span>

</span><span><span class="hljs-comment">// 1. 파일의 원본 내용을 읽으십시오</span></span><span>
</span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-string">'example.txt'</span></span><span>;
</span><span><span class="hljs-variable">$content</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$filename</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$content</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"파일을 읽을 수 없습니다: <span class="hljs-subst">$filename</span></span></span><span>");
}

</span><span><span class="hljs-comment">// 2. 遍历内容检查是否存존재하다控制字符</span></span><span>
</span><span><span class="hljs-comment">// ctype_cntrl 단일 캐릭터가 제어 문자인지 확인하십시오.,따라서 성격으로 판단해야합니다</span></span><span>
</span><span><span class="hljs-variable">$hasControlChars</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt; </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$content</span></span><span>); </span><span><span class="hljs-variable">$i</span></span><span>++) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ctype_cntrl</span></span><span>(</span><span><span class="hljs-variable">$content</span></span><span>[</span><span><span class="hljs-variable">$i</span></span><span>])) {
        </span><span><span class="hljs-variable">$hasControlChars</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
        </span><span><span class="hljs-keyword">break</span></span><span>;
    }
}

</span><span><span class="hljs-comment">// 3. 테스트 결과에 따라 처리하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$hasControlChars</span></span><span>) {
    </span><span><span class="hljs-comment">// 제어 문자가있는 경우,필터를 선택할 수 있습니다</span></span><span>
    </span><span><span class="hljs-variable">$filteredContent</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
    </span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt; </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$content</span></span><span>); </span><span><span class="hljs-variable">$i</span></span><span>++) {
        </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ctype_cntrl</span></span><span>(</span><span><span class="hljs-variable">$content</span></span><span>[</span><span><span class="hljs-variable">$i</span></span><span>])) {
            </span><span><span class="hljs-variable">$filteredContent</span></span><span> .= </span><span><span class="hljs-variable">$content</span></span><span>[</span><span><span class="hljs-variable">$i</span></span><span>];
        }
    }
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"제어 문자가 감지되었습니다,필터링 된 컨텐츠:\n"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$filteredContent</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-comment">// 제어 문자가 없습니다,콘텐츠를 직접 사용하십시오</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 내용은 정상입니다:\n"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$content</span></span><span>;
}

</span><span><span class="hljs-comment">// -------------------------------------------</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>