如何截断太长的字符串值?

时间:2017-02-09 19:39:01

标签: javascript php html css

我有阵列表:

$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)'

任何提示?

3 个答案:

答案 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);