2010-06-19 37 views
5

我想将一个像reallyreallyreallyreallyreallylongfilename这样的长字符串变成类似reallyreallyre...yreallyreally的东西。减少一个PHP字符串的长度并插入一个省略号

基本上,找到字符串的中间部分,并替换所有字符串,直到字符串的长度为< 30个字符包括一个省略号以表示字符串被替换的部分。

这是我的代码,我已经试过这样:

function cutString($input, $maxLen = 30) 
{ 
    if(strlen($input) < $maxLen) 
    { 
     return $input; 
    } 

    $midPoint = floor(strlen($input)/2); 
    $startPoint = $midPoint - 1; 

    return substr_replace($input, '...', $startPoint, 3); 
} 

找到字符串的中心和替换.字符两边但事情是我不知道如何使它将其缩减为30个字符,或者其他$maxLen

希望你明白我的问题,我不认为我在解释这8)

由于做了很好的工作。

回答

8

如何:

if (strlen($input) > $maxLen) { 
    $characters = floor($maxLen/2); 
    return substr($input, 0, $characters) . '...' . substr($input, -1 * $characters); 
} 
+0

这只是增加了一个'...'字符串的前面,所以输出'... reallyreallyreallyreallyreally'。 – 2010-06-19 17:29:43

+2

呃,它应该把'...'放在字符串James的中间,那里有两个substr调用。 – Amber 2010-06-19 17:32:08

+0

我知道有。但是,如果我将该代码放入我的'cutString'函数中,它将返回一个字符串的前面带有省略号的字符串。 – 2010-06-19 17:35:09

相关问题