我需要一个正则表达式从以下字符串中提取文件名(包括文件扩展名):
attachment; filename*=UTF-8''test.rar
或者像这样
attachment; filename*=UTF-8''Epost%20-test.part01.rar
目标:
test.rar
Epost%20-test.part01.rar
我该怎么做?
注意:我正在使用preg_match进行提取
答案 0 :(得分:0)
这应该适合你:
<?php
$str = "attachment; filename*=UTF-8''test.rar";
preg_match_all("/\w+\.\w+/", $str, $output);
echo $output[0][0];
?>
输出:
test.rar
修改强>
如果每次在字符串中使用2个单引号,则可以使用以下内容获取所有内容:
<?php
$str = "attachment; filename*=UTF-8''Epost%20-test.part01.rar";
preg_match_all("/[^\'\']+$/", $str, $output);
echo $output[0][0];
?>
输出:
Epost%20-test.part01.rar
答案 1 :(得分:0)
尝试简单地使用后面的
$str = "attachment; filename*=UTF-8''test.rar";
preg_match('/(?<=\')[a-z-A-Z0-9 -,.()%]*/', $str, $matches);
print_r($matches);
答案 2 :(得分:-1)
你需要提供更多信息。 第一部分总是一样的吗?文件名总是在最后,就在''之后?
- 编辑 -
如果您只需要删除第一部分,则不要使用regexp
$str = "attachment; filename*=UTF-8''test.rar";
$filename = substr($str, 29);