<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">// Comment l'utiliser avant de lire des fichiers externes ctype_cntrl Vérifiez les caractères de contrôle,éviter file_get_contents Une erreur s'est produite?</span></span><span>
</span><span><span class="hljs-comment">// -------------------------------------------</span></span><span>
</span><span><span class="hljs-comment">// exister PHP milieu,file_get_contents C'est une fonction commune pour lire le contenu des fichiers,Mais quand le fichier contient des caractères de contrôle,Une situation ou une erreur inattendue peut se produire pendant le processus de lecture。</span></span><span>
</span><span><span class="hljs-comment">// 为了éviter这种问题,可以exister读取文件前,Utiliser d'abord ctype_cntrl La fonction vérifie si le contenu du fichier contient des caractères de contrôle,Par conséquent, processus ou filtre,Assurer la stabilité du programme。</span></span><span>
</span><span><span class="hljs-comment">// Quels sont les caractères de contrôle?</span></span><span>
</span><span><span class="hljs-comment">// Le caractère de contrôle fait référence à ASCII 码milieu非打印字符,La gamme est généralement 0x00~0x1F et 0x7F,这些字符exister文本文件milieu通常不应该出现,Ou un logo au format spécial。</span></span><span>
</span><span><span class="hljs-comment">// Voici comment l'utiliser ctype_cntrl Détecter et filtrer les caractères de contrôle,s'assurer file_get_contents Lire normalement:</span></span><span>
</span><span><span class="hljs-comment">// 1. Lire le contenu original du fichier</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">"Impossible de lire le fichier: <span class="hljs-subst">$filename</span></span></span><span>");
}
</span><span><span class="hljs-comment">// 2. 遍历内容检查是否存exister控制字符</span></span><span>
</span><span><span class="hljs-comment">// ctype_cntrl Vérifiez seulement si un seul caractère est un caractère de contrôle,Par conséquent, il est nécessaire de juger par caractère</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. Processus en fonction des résultats du test</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">// S'il y a des caractères de contrôle,Vous pouvez choisir de filtrer</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">"Caractère de contrôle détecté,Contenu filtré:\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">// Pas de caractères de contrôle,Utiliser directement le contenu</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le contenu du fichier est normal:\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>
Étiquettes associées:
file_get_contents