(文件名特殊字符过滤)文件夹或文件名字中不能使用的特殊字符共有9个,过滤文件名中的特殊字符,并处理过滤后长度为0的情况
# 过滤文件名中的特殊字符,并处理过滤后长度为0的情况
function guiyi_txt_sanitize_file_name($fileName)
{
// 定义不允许的特殊字符
$invalidChars = array('\\', '/', ':', '*', '?', '"', '<', '>', '|');
// 使用 str_replace 过滤掉不允许的字符
$sanitizedFileName = str_replace($invalidChars, '', $fileName);
// 如果过滤后的文件名为空,则返回 "未命名"
if (empty(trim($sanitizedFileName))) {
return '未命名';
}
return $sanitizedFileName;
}文件夹或文件名字有一些特殊字符是不能使用的 一共有几个 特殊字符 不能用
文件夹或文件名字中不能使用的特殊字符共有9个,
具体为:
\(反斜杠)
/(正斜杠)
:(冒号)
*(星号)
?(问号)
"(双引号)
<(小于号)
>(大于号)
|(竖线)
(文件名特殊字符过滤)文件夹或文件名字中不能使用的特殊字符共有9个,过滤文件名中的特殊字符,并处理过滤后长度为0的情况
参考 https://zblog.gongshi5.com/post/109.html
python 实现
def guiyi_txt_sanitize_file_name(file_name):
# 定义不允许的特殊字符集合(使用集合提升查找效率)
invalid_chars = {'\\', '/', ':', '*', '?', '"', '<', '>', '|'}
# 使用生成器表达式过滤字符(更高效的方式)
sanitized_file_name = ''.join([c for c in file_name if c not in invalid_chars])
# 清理空白字符并处理空字符串情况
sanitized_file_name = sanitized_file_name.strip()
return '未命名' if not sanitized_file_name else sanitized_file_name
print(guiyi_txt_sanitize_file_name("test\\file :name.txt")) # 输出: testfilename.txt
print(guiyi_txt_sanitize_file_name(" *invalid?:/ ")) # 输出: 未命名
print(guiyi_txt_sanitize_file_name("valid file.txt")) # 输出: valid file.txt
print(guiyi_txt_sanitize_file_name(" ")) # 输出: 未命名