如果长度超过限制,php截断字符串并在最后添加一些遗漏…类似于ruby

我在我最近的PHP代码中多次需要这个function,所以我正在寻找一个function来完成工作,如果有任何…

如果字符串如果大于限制截断它并放一些遗漏文本,如...(continued) ..

就像在ruby中一样,我们在字符串上截断了函数

 "And they found that many people were sleeping better.".truncate(25, :omission => "... (continued)") 

我可以通过首先检查长度超过..然后修剪,然后连接……但我正在寻找类似的function..

 function substr_with_ellipsis($string, $chars = 100) { preg_match('/^.{0,' . $chars. '}(?:.*?)\b/iu', $string, $matches); $new_string = $matches[0]; return ($new_string === $string) ? $string : $new_string . '…'; } 
 function truncate($string,$length=100,$appendStr="..."){ $truncated_str = ""; $useAppendStr = (strlen($string) > intval($length))? true:false; $truncated_str = substr($string,0,$length); $truncated_str .= ($useAppendStr)? $appendStr:""; return $truncated_str; } 

您甚至可以编辑该function,以便您可以选择以确切的最大长度切割或尊重字边界…
选择基本上是你的

 class StringHelper { public static function truncate($string, $length = 100, $append = "...") { if (strlen($string) <= intval($length)) { return $string; } return substr($string, 0, $length) . $append; } } 

用于截断的静态通用方法,我使用Yii框架。

建立在@ OkekeEmmanuelOluchu的答案之上 。 有点短而清洁:

 function truncateString($string, $length = 100, $append = "..."){ $truncated_str = substr($string, 0, $length); $truncated_str .= strlen($string) > intval($length) ? $append : ""; return $truncated_str; }