PHP中是否存在此函数?

PHP中是否存在此函数?,php,string,Php,String,我发现自己需要这个函数,并想知道它是否已经存在于PHP中 /** * Truncates $str and returns it with $ending on the end, if $str is longer * than $limit characters * * @param string $str * @param int $length * @param string $ending * @return string */ function truncate_str

我发现自己需要这个函数,并想知道它是否已经存在于PHP中

/**
 * Truncates $str and returns it with $ending on the end, if $str is longer
 * than $limit characters
 *
 * @param string $str
 * @param int $length
 * @param string $ending
 * @return string
 */
function truncate_string($str, $length, $ending = "...")
{
    if (strlen($str) <= $length)
    {
        return $str;
    }
    return substr($str, 0, $length - strlen($ending)).$ending;
}
/**
*截断$str,如果$str较长,则返回它,并在末尾加上$ending
*超过$limit个字符
*
*@param string$str
*@param int$length
*@param string$ending
*@返回字符串
*/
函数truncate_字符串($str,$length,$ending=“…”)
{

if(strlen($str)不存在。但是,许多图书馆提供它,因为您不是第一个需要它的人。例如,Smarty它不存在

$suffix = '...';
$maxLength = 40;

if(strlen($str) > $maxLength){
  $str = substr_replace($str, $suffix, $maxLength);
}

根据后缀的长度是否应计入字符串的总长度,您的实现可能会略有不同。

以下是一行版本,供感兴趣的人参考

<?php 
    echo (strlen($string) > 40 ? substr($string, 0, 37)."..." : $string);
?>


这也是我的第一个回答。不过,从字符串长度中减去后缀的长度,否则您将有一个43个字符的结果。这是一个很好的工作,但我认为使用易于阅读的代码比使用三元代码要好,除非这是一个极端的速度情况,您将循环一百万次。三元运算符不会给出速度广告相对于if-else块的优势?:的主要优点是,与if-else不同,它是一个表达式,可以在if-else语法无效的地方使用。这不好,因为它将后缀附加到一个小于$maxLength的字符串中。确实,您仍然需要将其包装到自己的函数中,该函数只运行substr_replace()基于这个条件。