我在最近的 php 代码中多次需要此功能,所以我正在寻找一个函数来完成这项工作,如果有的话。
如果字符串大于限制,则将其截断并放置一些省略文本,例如...(continued)
..
就像在 ruby 中一样,我们在字符串上有截断函数
"And they found that many people were sleeping better.".truncate(25, :omission => "... (continued)")
我可以通过首先检查长度超过..然后修剪,然后连接来做到这一点......但我正在寻找一些类似的功能。
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 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 . '…';
}
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;
}