如何用PHP正则表达式检测上传文件名是否包含德语变音符号?
解决PHP正则检测文件名含德语变音符号的问题
你的代码存在三个核心问题:正则缺少定界符、逻辑完全偏离目标、未处理UTF-8多字节字符,导致无法正确检测德语变音符号。
正确代码实现
直接检测文件名中是否存在任意德语变音符号(ä、ö、ü、Ä、Ö、Ü、ß)即可,修改后的代码如下:
if (preg_match('/[äöüÄÖÜß]/u', $file_name)) { $file['error'] = __('WARNING: Invalid file name. German umlauts are not allowed.', 'wp-file'); }
关键说明
- 添加正则定界符:PHP的
preg_match要求正则表达式必须用定界符(如/)包裹,否则会抛出语法错误。 - 修正匹配逻辑:原正则的断言和分组逻辑完全错误,我们只需要直接匹配是否存在目标变音字符即可,无需复杂的前后限制。
- UTF-8修饰符
u:德语变音属于多字节UTF-8字符,添加u修饰符能确保正则正确识别这些字符,避免匹配失效。
内容的提问来源于stack exchange,提问作者Heena
相关产品推荐
相关产品推荐

