0

对于我需要检查字符串是否不超过给定长度并且如果它超过然后截断并添加省略号的情况,我通常使用如下函数但想知道是否不能在一行中做到这一点,preg_replace 可能吗?

function truncate($str, $length){

    if (strLen($str) > $length) {
        $str = substr($str, 0, $length) . ' ...';
    }
    return $str;
}
4

2 回答 2

5

使用内联 if:

return strLen($str) > $length ? substr($str, 0, $length) . ' ...'  : $str;
于 2013-03-21T17:21:00.743 回答
3

如果您正在寻找正则表达式解决方案:

function truncate($str, $length) {
    return preg_replace('/(.{'.(int)$length.'}).+/s', '$1 ...', $str);
}
于 2013-03-21T17:23:34.523 回答