php - 从 Content-Disposition header 中提取带有特殊字符的文件名

标签 php regex header

我需要从 Content-Disposition header 中提取文件名(带扩展名)。我以前用过这个正则表达式:

/.*filename=[\'\"]?([^\'\"]+)/

但它不适用于像这样的文件名:

EXAMPLE- I'm ößä.dat

所以我正在寻找一个可以处理这样的文件名的正则表达式

最佳答案

捕获组 ([^\'\"]+) 包含一个否定字符类,该字符类不允许使用单引号,因为 I'm 中有一个引号>.

如果您删除一个引号,它将起作用:

/.*filename=[\'\"]?([^\"]+)/

查看演示 https://regex101.com/r/pY9mR4/1

此外,为了匹配文件名周围的引号,最好在正则表达式末尾使用组引用:

/.*filename=([\'\"]?)([^\"]+)\1/

https://regex101.com/r/pY9mR4/2

关于php - 从 Content-Disposition header 中提取带有特殊字符的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31605237/

相关文章:

php - 将两张不同结构的表合并为一张

php - 使用 PHP 剥离 HTML 注释但保留条件

c++ - 在没有初始化列表的情况下为c++中的头文件中的const int赋值

php - 如何在不维护状态名称数组的情况下用PHP发送状态代码?

php - 拉维尔 5 : php artisan migrate:refresh

php - MySQL查询忽略大写

php - 列出某个位置特定半径内的点?

javascript - 如何验证在特定条件下必须存在的字符

java - 如何从 Java 中的字符串中删除\u200B(零长度空白 Unicode 字符)?

PHP 处理 HTTP header