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

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

藏色散人
リリース: 2023-03-04 13:52:01
オリジナル
2369 人が閲覧しました

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><div 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のファイルトラバーサルで文字化けが発生する問題を解決する方法file と判断されます。次のファイルは読み込まれていません!

私は単独でテストしました

<?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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート