ホームページ >バックエンド開発 >PHPの問題 >PHPのファイルトラバーサルで文字化けが発生する問題を解決する方法

PHPのファイルトラバーサルで文字化けが発生する問題を解決する方法

藏色散人
藏色散人オリジナル
2020-08-15 09:50:332400ブラウズ

PHP による文字化けファイルの走査の解決策: 最初に PHP サンプル ファイルを作成し、次にファイル エンコーディングを「GBK」に変更し、最後に「read_all」メソッドを使用してフォルダー内のすべてのファイルを走査します。

PHPのファイルトラバーサルで文字化けが発生する問題を解決する方法PHP ビデオ チュートリアル 」

最近のインタビューに深く衝撃を受け、故郷に戻りました河南省に1年以上滞在しました。赤ちゃんを産んだ後、IT業界の発展についていけなくなったと気づきました。

面接の過程で、この質問が質問項目に含まれていることを知りました。多くの企業の筆記試験問題に対応しており、仕事でもよく使われる機能です。

これは簡単なことではありませんか?

<?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;);

?>

安心してブラウザを開いてください

PHPのファイルトラバーサルで文字化けが発生する問題を解決する方法#我屮艸芔茻、なんてこった! </p><p>Windows環境ではファイルエンコードがUTF8のため、ディレクトリ内に中国語のディレクトリがあると文字化けして表示されます! ! </p><p>この時、ファイルエンコードもブラウザ表示エンコードもutf-8なのですが、Windowsのディレクトリ名がGBKだと思っていたので、iconvを使ってエンコード形式を変換し、以下のようにコードを変更しました。 17 行目:</p><pre class=<?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;); ?>

コードの 17 行目に iconv を追加します。今回は問題ないはずです。

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

utf8 エンコード形式では実際には機能しません。

PHPのファイルトラバーサルで文字化けが発生する問題を解決する方法ファイルのエンコードを次のように変更するだけです。 GBK. </p><p><img style=

以上がPHPのファイルトラバーサルで文字化けが発生する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。