我有阵列表:
$myarray = array(
array(
'name' => 'File name 1 - type.zip',
'size' => '600KB',
),
array(
'name' => 'File name 2 - type.pdf',
'size' => '1.5MB',
),
array(
'name' => 'File name 3 - type.jpeg',
'size' => '50.5KB',
),
);
。 。 。并且需要截断文件名,但要保留文件的扩展名和大小。
因此,例如'File name 1 - type.zip'
应显示为'File name 1 - ... .zip (600KB)'
。
任何提示?
答案 0 :(得分:0)
你可以使用explode和substr 假设你的len_you_neen是6 char
$tmpArray = explode('.',$myArray['name']);
$myStr = substr($tmpArray[0], 0, 6);
$resultStr = $myStr . '.'.$tmpArray[1];
答案 1 :(得分:0)
你可以试试下面的东西。它不包括文件大小,但我相信你可以从那里拿它。
$fileName = "File name 1 - type.zip";
echo shortenFileNameWhileMaintainingExtension($fileName);
function shortenFileNameWhileMaintainingExtension($fileName, $shortenToLength = 20) {
$extension = substr(strrchr($fileName, '.'), 1);
if((strlen($fileName) - strlen($extension)) < $shortenToLength) {
return $fileName;
}
$newFileName = trim(substr($fileName, 0, $shortenToLength)) . "...." . $extension;
return $newFileName;
}
答案 2 :(得分:0)
您可以使用pathinfo
将名称与扩展名分开。然后有各种方法来缩短和添加省略号。来自this answer的方法非常简单。您可以在阵列上映射此方法以格式化所有项目。
$max = 11;
$formatted = array_map(function($file) use ($max) {
$info = pathinfo($file['name']);
$name = $info['filename'];
$name = strlen($name) > $max ? substr($name, 0, $max) . '...' : $name;
return "$name$info[extension] $file[size]";
}, $myarray);