make sure to generate valid filenames (#2238)

This commit is contained in:
Kevin Papst
2021-01-08 14:50:23 +01:00
committed by GitHub
parent a5fdf81df5
commit 244169d6d5
7 changed files with 80 additions and 14 deletions

View File

@@ -10,6 +10,7 @@
namespace App\Utils;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\String\UnicodeString;
final class FileHelper
{
@@ -68,4 +69,20 @@ final class FileHelper
{
$this->filesystem->remove($filename);
}
public static function convertToAsciiFilename(string $filename): string
{
$filename = new UnicodeString($filename);
$filename = (string) $filename->collapseWhitespace()->trim()->replace(PHP_EOL, '')->replace(' ', '_');
$dangerousCharacters = ['"', "'", '&', '/', '\\', '?', '#', '%'];
$filename = str_replace($dangerousCharacters, ' ', $filename);
$filename = new UnicodeString($filename);
$filename = (string) $filename->collapseWhitespace()->replace(' ', '_')->ascii()->trim();
$filename = preg_replace('/[^a-zA-Z0-9\x7f-\xff\-]++/', ' ', $filename);
$filename = str_replace(' ', '_', trim($filename));
return $filename;
}
}