make sure to generate valid filenames (#2238)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user