js is_valid_filename验证文件名的函数

函数代码

function is_valid_filename($name)
{
  $parts = preg_split("/(\/|".preg_quote("\\").")/", $name);
  if (preg_match("/[a-z]:/i", $parts[0])) {
    unset($parts[0]);
  }
  foreach ($parts as $part)
  {
    print "part = '$part'<br>";
    if (preg_match("/[".preg_quote("^|?*<\":>", "/")."\a\b\c\e\x\v\s]/", $part) || preg_match("/^(PRN|CON|AUX|CLOCK$|NUL|COMd|LPTd)$/im",
    str_replace(".", "\n", $part))) {
      return false;
    }
  }
  return true;
}
$bad = array_merge(array_map('chr', range(0, 31)), array("<", ">", ":", '"', "/", "\\", "|", "?", "*"));
$result = str_replace($bad, "", $filename); 

windows 系统文件命名规则限制

https://msdn.microsoft.com/en-us/library/aa365247

(0)

相关推荐

  • js is_valid_filename验证文件名的函数

    函数代码 function is_valid_filename($name) { $parts = preg_split("/(\/|".preg_quote("\\").")/", $name); if (preg_match("/[a-z]:/i", $parts[0])) { unset($parts[0]); } foreach ($parts as $part) { print "part = '$part

  • js form 验证函数 当前比较流行的错误提示

    前段时间写了一个 js数据验证.js email验证.js url验证.js长度验证.js数字验证等 弹出对话框形式的 但是,现在不太流行那种很不友好的方式,于是重写了一个,封装得更加好的,更友好的层形式 共享给大家,如果大家使用有bug,请大家给我留言完善,谢谢了. 保存为 test.js 复制代码 代码如下: /** * 数据验证框架.增加了对id字段检查出错时,直接在对应后面添加一< span>元素来显示错误信息. * * @author wangzi6hao * @version 2.

  • 纯js封装的ajax功能函数与用法示例

    本文实例讲述了纯js封装的ajax功能函数与用法.分享给大家供大家参考,具体如下: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)AJAX 不是新的编程语言,而是一种使用现有标准的新方法.是7种技术的综合,它包含了七个技术(javascript xml xstl xhtml dom xmlhttprequest , css),  ajax  是一个粘合剂. 直接上程序: js调用部分: <script src="ds

  • Nest.js 授权验证的方法示例

    0x0 前言 系统授权指的是登录用户执行操作过程,比如管理员可以对系统进行用户操作.网站帖子管理操作,非管理员可以进行授权阅读帖子等操作,所以实现需要对系统的授权需要身份验证机制,下面来实现最基本的基于角色的访问控制系统. 0x1 RBAC 实现 基于角色的访问控制(RBAC)是围绕角色的特权和定义的策略无关的访问控制机制,首先创建个代表系统角色枚举信息 role.enum.ts: export enum Role { User = 'user', Admin = 'admin' } 如果是更复

  • Java实现验证文件名有效性的方法详解

    目录 使用java.io.File 使用 NIO2 API 自定义的实现 使用String.contains 正则表达式模式匹配 总结 在本文中,我们将讨论使用 Java 验证一个给定的字符串是否具有操作系统的有效文件名的不同方法.我们可以根据限制的字符或长度限制来检查该值. 我们将只关注核心解决方案,不使用任何外部依赖.我们将使用JDK的java.io和NIO2包来实现我们验证方法.. 使用java.io.File 让我们从第一个例子开始,使用 java.io.File 类.在这个解决方案中,

  • 一个容易犯错的js手机号码验证正则表达式(推荐)

    写一个简单的正则表达式,用来校验11位手机号码,开头允许是13.15.18,我一开始这样写: var reg = /^(13[0-9]{9})|(15[0-9]{9})|(18[0-9]{9})$/; 运行发现,即使是 13988888877157777,也能通过验证,这说明这个写法错了,我的本意是希望这样: ^(13[0-9]{9})$ 或者 ^(15[0-9]{9})$ 或者 ^(18[0-9]{9})$ 所以正确写法是:var reg = /^1[358][0-9]{9}$/;这样才能保证

  • 详解js中class的多种函数封装方法

    本文实例讲解了js中class的多种函数封装方法,分享给大家供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>关于class的多种函数封装</title> <style> body{ margin: 0; } li{ height: 20px; } </style

  • js循环动态绑定带参数函数遇到的问题及解决方案[转]

    众所周知,不带参数的绑定非常简单,只要使用(语法:"document.getElementById("对象ID名").attachEvent("事件名,如onchange",函数名);")(示例:"document.getElementById("select_0").attachEvent("onchange",modifyFunction);")即可.(注:以下只写示例) 带参数的绑

  • JS正则表达式验证密码格式的集中情况总结

    1.密码必须为6-18位字母.数字.特殊符号的: var reg =/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{6,18}$/; 2.密码必须为6-18位字母.数字 var reg=/^(?![^a-zA-Z]+$)(?!\D+$)/ 3.支持字母.数字.标点符号.特殊字符 var reg=/^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?

  • JS中的Replace()传入函数时的用法详解

    replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串.. 废话不多说了,直接给大家贴代码了,具体代码如下所示: <script> var str = "a1ba2b"; var reg = /a.b/g; str = str.replace(reg,func

随机推荐