1

次の名前の次の.zipファイルがありますCafé, Room service, deli'very.zip.zip特殊文字を削除してファイルの名前を変更できます。

$string = str_replace(array(","),array(""),$string);

$accent   = 'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕƒ';
$noaccent = 'SOZsozYYuaaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRra';
$string = strtr(utf8_decode($string),utf8_decode($accent),$noaccent);
$string = strtr($string, $accent, $noaccent);

ファイルからファイルを読み取るときの問題は、.zip元の .zip 名を参照し、新しく変更された名前ではありません。

編集:

.zipファイル名を からに変更することはできましCafé, Room service, deli'very.zipCafe Room service, delivery.zipが、.zip ファイルから読み取る場合、1.jpgたとえばCafé, Room service, deli'very/1.jpg.

誰もそれに集中できますか?

編集:

.zip ファイルに次のコードを使用しています

$zip = zip_open($_FILES['tmp_name']);
$zipEntry = zip_read($zip);
zip_entry_name($zipEntry);
4

3 に答える 3

1

パスは、zip データの一部としてエンコードされます。zip ファイル名に基づくものではありません。ファイル名だけを変更しても、zip ファイル内のパスは変更されません。

于 2013-07-17T10:09:37.977 に答える
0

私は長い間探していた質問に対する解決策を持っています。
ここに私の解決策があります。

$_FILES['name'] = str_replace("'","_",$_FILES['name']);
$_FILES['name'] = preg_replace("/[^a-zA-Z0-9.\s\/]/", "", $_FILES['name']);

特殊文字を切り捨てて何も置き換えていないところ""。アスキー文字、スペース、スラック (前方) を許可します。.zipそして、これを行った後、特殊文字を含むファイルの下のディレクトリ、サブディレクトリ、およびファイルを(任意の言語で)適切に読み取ることができます。他の質問の解決策を提供してくれた仲間の友人に特に感謝します

于 2013-09-04T08:05:29.777 に答える