(文件名特殊字符过滤)文件夹或文件名字中不能使用的特殊字符共有9个,过滤文件名中的特殊字符,并处理过滤后长度为0的情况

zblog10个月前zblog问题解答37
# 过滤文件名中的特殊字符,并处理过滤后长度为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("   "))  # 输出: 未命名


相关文章

Nginx没有防火墙 Nginx设置加上 垃圾蜘蛛过滤

 if ($http_user_agent ~* "censys|bytedance|GPTBot|openai|Amazonbot|dotbot|c...

php array_pop 函数 从数组的最后一个元素弹出值,并返回这个值。

php array_pop 函数array_pop 函数是 PHP 中的一个内置函数,它的作用是从数组的最后一个元素弹出值,并返回这个值。同时,该数组的长度会减少 1,因为被弹出的元素已经从...

aardio:fsys文件操作 获取当前目录 文件操作

aardio:fsys文件操作 获取当前目录 文件操作

aardio:fsys文件操作参考标准库/fsys文件操作/默认库1、获取项目根目录的位置getCurDir() = 获取当前目录。当前目录易被改动,导致相对路径(例如 "...

PHP uniqid() 函数

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。  <?php  echo uniqid();  &nb...

linux伪静态 (大括号转义)

linux伪静态 (大括号转义)

大括号转义问题: Nginx配置文件中,大括号{}默认用于配置块(如server{}),直接用在正则表达式中会被误解析。 解决方案:用单引号包裹正则表达式(推荐),或转义大括号(但转义可能不生效,...

mysql创建给指定数据库创建账户密码

-- 假设你已经登录到了 MySQL 数据库管理系统中 -- 1. 创建用户 CREATE USER 'z...