缩短PHP字符串的长度并插入省略号

缩短PHP字符串的长度并插入省略号,php,string,trim,ellipsis,Php,String,Trim,Ellipsis,我想把像reallyreallylongfilename>这样的长字符串转换成像reallyreallyre…yreallyreally这样的字符串 基本上,找到字符串的中间部分并替换那里的所有内容,直到字符串长度小于30个字符,包括一个省略号,以表示字符串的某些部分已被替换 这是我尝试的代码: function cutString($input, $maxLen = 30) { if(strlen($input) < $maxLen) { return $

我想把像
reallyreallylongfilename>这样的长字符串转换成像
reallyreallyre…yreallyreally
这样的字符串

基本上,找到字符串的中间部分并替换那里的所有内容,直到字符串长度小于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);
}
函数cutString($input,$maxLen=30)
{
如果(strlen($input)<$maxLen)
{
返回$input;
}
$midPoint=楼层(strlen($input)/2);
$startPoint=$midPoint-1;
返回substr_replace($input,“…”,$startPoint,3);
}
它找到字符串的中心,并用
替换任意一侧的字符,但问题是我不知道如何将其减少到30个字符,或是任何
$maxLen
是什么

希望你能理解我的问题,我觉得我解释得不是很好(8)

谢谢。

那么:

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

它只在字符串的前面添加了一个<代码>…>代码>,所以输出是“代码>……实际上是真的真的< <代码> >。呃,应该把<代码>……/代码>放在字符串杰姆斯的中间,那里有两个子串调用。我知道有。但如果我将该代码放入我的
cutString
函数中,它将返回一个在字符串前面带有省略号的字符串。但它不考虑由“…”添加的三个字符,因此,如果maxLen为30,则结果字符串的长度将为33个字符$字符数不应超过下限($maxLen-3)/2)@James P,要将该代码放入剪切字符串,必须重命名maxLen或VoteyDisciple的maxLength