2

「PhpConcept ライブラリ - Zip モジュール 2.8.2」( http://www.phpconcept.net/pclzip/ ) を使用して、zip ファイルを作成するために pclzip とも呼ばれます。Windows 8.1 で XAMPP を実行しています。

内容的に問題のない zip ファイルを作成できます。ただし、スウェーデン語の文字 (åäö) を含むファイル名とフォルダー名は、zip ファイル内でめちゃくちゃになります。

使用法 (フォルダーの圧縮):

require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
if ($archive->add('filestobezipped/') == 0) {
    die('Error : '.$archive->errorInfo(true));
}

文字エンコーディングの問題があると思います。しかし、これはどのように解決されるべきですか?PclZip ライブラリのユーザー ガイドは非常に理解しにくいものです。zip 形式は CP437 と UTF-8 を使用します。私のphpはISO8859-1を使用しています。

4

2 に答える 2

1

さて、各ファイルがアーカイブに追加されたときに実行されるコールバック関数「myPreAddCallBack」を追加することで、これを自分で解決しました。ファイル名を CP437 に変換します。PCLZIP_CB_PRE_ADD パラメータのドキュメント: http://www.phpconcept.net/pclzip/user-guide/50

require_once('pclzip.lib.php');

function myPreAddCallBack($p_event, &$p_header)
{
    $encoding = mb_detect_encoding($p_header['stored_filename']);
    $p_header['stored_filename'] = iconv($encoding,"CP437",$p_header['stored_filename']);
    return 1;
}

$archive = new PclZip('archive.zip');
if ($archive->add('filestobezipped/',PCLZIP_CB_PRE_ADD, 'myPreAddCallBack') == 0) {
    die('Error : '.$archive->errorInfo(true));
}
于 2018-04-10T14:05:51.320 に答える