使用preg_replace删除不需要的字符,但需要保留'';


Using preg_replace to remove unwanted characters but need to keep '.'

我正在使用php preg_replace来清理我的上传文件,我想删除任何不需要的字符,如(&?/''~{}[]-这也会删除空白)等,但我不想删除"(句号/句号),因为它去掉了文件扩展名。

我一直在互联网上搜索,但一直在寻找要么删除所有特殊字符,要么过于复杂的正则表达式。

这是我当前的代码,但正如你所看到的,它正在删除"

$filename = preg_replace("/[^a-zA-Z0-9]/", '', "{$uploadedFile}");

我一定错过了一个答案,因为这似乎是一个相当直接的请求,有人知道我需要包括什么吗?

字符类列出要允许/禁止的字符。所以,在你的角色类中添加.,你就可以开始了。

$filename = preg_replace("/[^a-zA-Z0-9.]/", '', "{$uploadedFile}");

演示:https://regex101.com/r/bE5qI4/1

有关其他信息:http://www.regular-expressions.info/charclass.html

另外值得注意的是:

在大多数regex风格中,字符类中唯一的特殊字符或元字符是右括号(])、反斜杠()、插入符号(^)和连字符(-)。