文件名的 PHP 正则表达式

标签 php regex preg-replace preg-match filenames

我让用户可以通过 textarea 更改文件名,但现在我遇到了正则表达式问题。

正如我在 Windows 7 中看到的那样,文件名只允许使用这些字符:
\ / : * ? < > |
但我固执地,也许也是明智的,选择将正则表达式最小化为仅这些特殊字符:
- _ .
所有其他的都应该被砍掉。

有人可以帮我解决这个正则表达式吗?

preg_replace 所有但:A-Za-z0-9- _ .
我还是真的不明白。

最佳答案

preg_replace('/[^A-Za-z0-9 _ .-]/', '', $filename);

[] 是一个字符类,而 ^ 否定它。所以它字面上匹配除该组中的字符以外的任何内容。

请注意 -是在最后,因为如果在其他地方使用,它是一个特殊的范围字符,例如0-9

关于文件名的 PHP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13706039/

相关文章:

php - 无法将带有修饰符/e的 preg_replace() 转换为 preg_replace_callback()

javascript - 如何使用 PHP 从动态网页中抓取页面链接?

javascript - 基于 AJAX 的 Web 应用程序

php - 当用户已连接时调用 Facebook 注销/断开 FB.login()

java - 防止 getText() 计算 EL 表达式

C# 使用正则表达式删除括号内的所有内容和括号本身

c# - 正则表达式从 HTML 内容中获取 href 和 src?

php - 使用 preg_replace 时我得到双字符...?

PHP 预替换

php - 如何使 Firefox 开发人员工具在控制台中显示 FirePHP 消息?