我在PHP中使用ZipArchive lib生成Zip存档。它运行良好,但如果文件名中有不允许的符号(例如'<''>'),则归档文件没有此文件。
我可以裁剪所有不允许的符号。
我无动于衷地讨厌作物。任何其他方式(可能是掩码,但'\'和'^'不起作用)?
感谢。
答案 0 :(得分: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"
您可以将白名单中的任何其他转义符号添加到此表达式。