<?php
function prepareClientFilename($filename = '', $extension = '', $maxLength = 255) {
$filename = strlen($filename) ? $filename : uniqid('fid_', true);
$extension = rtrim(".{$extension}" , '.');
return substr($filename, 0, $maxLength - strlen($extension)) . $extension;
}
$tests = [
prepareClientFilename('this_is_a_string', 'txt'),
prepareClientFilename(str_repeat(implode(range('a','z')), 9), 'pdf'),
prepareClientFilename(str_repeat(implode(range('a','z')), 10), ''),
prepareClientFilename(str_repeat(implode(range('a','z')), 10), 'csv'),
prepareClientFilename('', 'jpeg', 10),
prepareClientFilename('', 'mp4'),
prepareClientFilename(),
];
var_export(array_combine($tests, array_map('strlen', $tests)));
preferences:
24.66 ms | 413 KiB | 5 Q