Мне нужно регулярное выражение для извлечения имени файла (включая расширение файла) из следующей строки:
attachment; filename*=UTF-8''test.rar
или как это
attachment; filename*=UTF-8''Epost%20-test.part01.rar
Цель:
test.rar
Epost%20-test.part01.rar
Как я могу это сделать?
Примечание: я использую preg_match для извлечения
Это должно работать для вас:
<?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
Попробуйте просто использовать взгляд позади
$str = "attachment; filename*=UTF-8''test.rar";
preg_match('/(?<=\')[a-z-A-Z0-9 -,.()%]*/', $str, $matches);
print_r($matches);
Вам нужно дать больше информации.
первая часть всегда одна и та же? имя файла всегда в конце, сразу после »?
—редактировать—
если вам просто нужно удалить первую часть, не используйте regexp
$str = "attachment; filename*=UTF-8''test.rar";
$filename = substr($str, 29);