Maison > développement back-end > Problème PHP > Comment résoudre le problème des caractères tronqués dans la traversée de fichiers php

Comment résoudre le problème des caractères tronqués dans la traversée de fichiers php

藏色散人
Libérer: 2023-03-04 13:52:01
original
2369 Les gens l'ont consulté

La solution pour que PHP traverse des fichiers tronqués : créez d'abord un exemple de fichier PHP ; puis changez l'encodage du fichier en "GBK" ; enfin, utilisez la méthode "read_all" pour parcourir tous les fichiers du dossier.

Comment résoudre le problème des caractères tronqués dans la traversée de fichiers phpTutoriel vidéo PHP"

J'ai été profondément touché par la récente interview et je suis retourné dans ma ville natale dans le Henan depuis plus d'un an Après avoir eu un bébé, j'ai découvert que je ne pouvais plus suivre le développement de l'industrie informatique

Au cours du processus d'entretien, j'ai découvert que cette question était incluse dans l'examen écrit questions de nombreuses entreprises, et c'est aussi une fonction qui est souvent utilisée au travail.

N'est-ce pas un jeu d'enfant ?

<?php
/*
* 遍历文件夹下所有文件
*
* 作者:郭猛
* 邮箱:martin.guo@qq.com
*
*/

function read_all ($dir){
    if(!is_dir($dir)) return false;

    $handle = opendir($dir);

    if($handle){
        while(($fl = readdir($handle)) !== false){
            $temp = $dir.DIRECTORY_SEPARATOR.$fl;
            //如果不加  $fl!=&#39;.&#39; && $fl != &#39;..&#39;  则会造成把$dir的父级目录也读取出来
            if(is_dir($temp) && $fl!=&#39;.&#39; && $fl != &#39;..&#39;){
                echo &#39;目录:&#39;.$temp.&#39;<br>&#39;;
                read_all($temp);
            }else{
                if($fl!=&#39;.&#39; && $fl != &#39;..&#39;){

                    echo &#39;文件:&#39;.$temp.&#39;<br>&#39;;
                }
            }
        }
    }
}

read_all(&#39;D:\wamp\www\test&#39;);

?>
Copier après la connexion

Ouvrez le navigateur en toute confiance

Je suis 屮Eh bien, qu'est-ce que c'est !

Dans l'environnement Windows, le codage du fichier est UTF8 Lorsqu'il y a un répertoire chinois dans le répertoire, des caractères tronqués seront affichés ! !

À l'heure actuelle, l'encodage de mes fichiers et celui de l'affichage de mon navigateur sont tous deux utf-8. Je pensais que le nom du répertoire de Windows était GBK, j'utilise donc iconv pour convertir le format d'encodage. J'ai modifié le code comme suit. Ligne 17 :

<?php
/*
* 遍历文件夹下所有文件
*
* 作者:郭猛
* 邮箱:martin.guo@qq.com
*
*/

function read_all ($dir){
    if(!is_dir($dir)) return false;

    $handle = opendir($dir);

    if($handle){
        while(($fl = readdir($handle)) !== false){
            $temp = iconv(&#39;GBK&#39;,&#39;utf-8&#39;,$dir.DIRECTORY_SEPARATOR.$fl);//转换成utf-8格式
            //如果不加  $fl!=&#39;.&#39; && $fl != &#39;..&#39;  则会造成把$dir的父级目录也读取出来
            if(is_dir($temp) && $fl!=&#39;.&#39; && $fl != &#39;..&#39;){
                echo &#39;目录:&#39;.$temp.&#39;<br>&#39;;
                read_all($temp);
            }else{
                if($fl!=&#39;.&#39; && $fl != &#39;..&#39;){

                    echo &#39;文件:&#39;.$temp.&#39;<br>&#39;;
                }
            }
        }
    }
}

read_all(&#39;D:\wamp\www\test&#39;);

?>
Copier après la connexion

Ajoutez iconv à la 17ème ligne de code, ça ne doit poser aucun problème cette fois

Comment résoudre le problème des caractères tronqués dans la traversée de fichiers phpFichier ! Le fichier suivant n'a pas été lu !

Je l'ai testé seul

<?php

$dir=&#39;D:\wamp\www\test\test_dir\子目录&#39;;
var_dump(is_dir($dir));

?>
Copier après la connexion

Ça ne fonctionne vraiment pas au format d'encodage utf8

Comment résoudre le problème des caractères tronqués dans la traversée de fichiers phpChangez simplement l'encodage du fichier en. GBK. </p><p><img style=

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal