【发布时间】:2022-05-10 21:00:53
【问题描述】:
我想清理所有上传文件的文件名。我想删除除句点、字母和数字之外的所有字符。我不擅长正则表达式,所以我想我会在这里问。
有人能告诉我如何把它放在一起吗?我正在使用 PHP。
【问题讨论】:
-
这取决于你的字母是什么意思。 (直到现在)提出的解决方案仅排除
a-z和A-Z,但都将匹配这些范围之外的字母,例如é等。
我想清理所有上传文件的文件名。我想删除除句点、字母和数字之外的所有字符。我不擅长正则表达式,所以我想我会在这里问。
有人能告诉我如何把它放在一起吗?我正在使用 PHP。
【问题讨论】:
a-z 和 A-Z,但都将匹配这些范围之外的字母,例如 é 等。
$newfilename=preg_replace('/[^a-zA-Z0-9.]/','',$filename);
【讨论】:
[^a-zA-Z0-9._],或更简单的[^.\w]。
s/[^.a-zA-Z\d]//g
(这是一个如何使用 RegExp 的 Perl 表达式。在 PHP 中你可以这样做:
$output = preg_replace('/[^.a-zA-Z\d]/', '', $input);
【讨论】:
^ 的意思是“除此之外的任何字符”。之后的.a-zA-Z\d 表示“句号、字母和数字”。所以它会匹配所有不是句点、字母和数字的字符,然后将它们删除。
尝试使用这个:
$cleanString = preg_replace('#\W#', '', $string);
它将删除除字母和数字之外的所有内容。
【讨论】: