【问题标题】:How can I truncate string values that are too long?如何截断太长的字符串值?
【发布时间】:2017-02-09 19:39:00
【问题描述】:

我有数组列表:

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

有什么建议吗?

【问题讨论】:

  • 只做字符串子串并抓取最后 25 个字符或任意多个字符。
  • 欢迎来到 Stack Overflow!我更新了您的问题和标题,使其更接近您想要做的事情,这将使您更有可能获得可以帮助您和其他人的答案。如果您认为我歪曲了您的问题,请随时澄清更多。祝你好运!

标签: javascript php html css


【解决方案1】:

您可以使用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);

【讨论】:

    【解决方案2】:

    您可以尝试如下所示。它不包括文件大小,但我相信您可以从那里获取它。

    $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;
    }
    

    【讨论】:

      【解决方案3】:

      你可以使用explode和substr 假设你的 len_you_neen 是 6 个字符

      $tmpArray = explode('.',$myArray['name']);
      $myStr = substr($tmpArray[0], 0, 6);
      
      $resultStr = $myStr . '.'.$tmpArray[1];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-25
        • 2016-07-17
        • 1970-01-01
        • 2018-07-06
        • 1970-01-01
        相关资源
        最近更新 更多