我让用户可以通过 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/