1

我使用 PHP 中的 ZipArchive 库生成 Zip 存档。它工作得很好,但如果文件名有不允许的符号(例如'<''>')存档没有这个文件。

我可以裁剪所有不允许的符号。

我无缘无故讨厌庄稼。任何其他方式(可能是掩码,但 '\' 和 '^' 不起作用)?

谢谢。

4

1 回答 1

1

您可以尝试使用preg_replace()

<?php
header('Content-Type: text/plain');

$file = '!@#$%^&*()ashdgf$%^&*(.pdf';

$file = preg_replace('/[^a-z\.\-\_]/i', '_', $file);

var_dump($file);
?>

显示:

string(26) "__________ashdgf______.pdf"

如果\^是可接受的字符,那么使用这个:

<?php
header('Content-Type: text/plain');

$file = 'folder\as!@#$%^&*()ashdgf$%^&*(.zip';

$file = preg_replace('/[^a-z\.\-\_\\\\^]/i', '_', $file);

var_dump($file);
?>

显示:

string(35) "folder\as_____^____ashdgf__^___.zip"

您可以将白名单中的任何其他转义符号添加到此表达式。

于 2013-05-28T07:53:34.047 回答