<span><span><span class="hljs-meta"><?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> < </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> < </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">?></span></span><span>
</span></span>
関連タグ:
file_get_contents