如何缩短php截断函数?

如何缩短php截断函数?,php,regex,Php,Regex,对于需要检查字符串是否未超过给定长度的情况 若确实如此,则截断并添加省略号,我通常使用如下函数 但是我想知道,如果一个人不能在一行中完成,也许是preg_替换 function truncate($str, $length){ if (strLen($str) > $length) { $str = substr($str, 0, $length) . ' ...'; } return $str; } 如果: return strLen($str

对于需要检查字符串是否未超过给定长度的情况 若确实如此,则截断并添加省略号,我通常使用如下函数 但是我想知道,如果一个人不能在一行中完成,也许是preg_替换

function truncate($str, $length){

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

return strLen($str) > $length ? substr($str, 0, $length) . ' ...'  : $str;

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

function truncate($str, $length) {
    return preg_replace('/(.{'.(int)$length.'}).+/s', '$1 ...', $str);
}

使用…我认为不是用动态
$length
值代替“…”。对于静态长度,您可以只使用子字符串行。为什么您关心是否在一行中使用它?你认为这会对你的程序运行速度产生一些影响吗。除非您调用truncate数千次,否则它可能不会。如果您想找出代码的哪些部分比较慢,请使用XDebug之类的分析工具。是否要截断?说真的,你所拥有的一切都没有错。它是有效的,而且是不言自明的。不要太担心删减一个已经这么短的函数。除了最简单的情况外,正则表达式在所有情况下都是无法理解的。哦,这不是性能问题,而是希望生成漂亮的代码。美丽和正则表达式不是真正属于同一句话的词:)一个非常聪明的方法+1!!!就像一个咒语,太棒了。