可能重复:
Extract a fixed number of chars from an array, just full words截断在PHP中的字符串不割字
我需要截断字符串的时候都超过20个字符长。字必须始终呆在一起,所以这个:
问好我的小朋友。
变成这样:
问好我的...
,而不是这样的:
问好我的利特...
我成立此功能基于非常old thread中的评论。这个正则表达式的问题是它删除了句子的最后一个单词(当有两个单词或更多)时。
function gen_string($string,$min=20) {
$new = preg_replace('/\s+?(\S+)?$/','',substr($string,0,$min));
if(strlen($new) < strlen($string)) $new .= '…';
return $new;
}
有人可以给我一个正则表达式的手吗?谢谢!
解决方案通过Alasdair(少数润饰)
function gen_string($string,$max=20) {
$tok = strtok($string,' ');
$sub = '';
while($tok !== false && mb_strlen($sub) < $max) {
if(strlen($sub) + mb_strlen($tok) <= $max) {
$sub .= $tok.' ';
} else {
break;
}
$tok = strtok(' ');
}
$sub = trim($sub);
if(mb_strlen($sub) < mb_strlen($string)) $sub .= '…';
return $sub;
}
重复[#1](http://stackoverflow.com /问题/ 79960 /如何对截断-A-字符串中的PHP到所述字-最接近到一个-一定-数的-甜心)[#2](HTTP://计算器。 COM /问题/ 965235 /如何-可以-I-截断-A-字符串中的PHP)[#3](http://stackoverflow.com/questions/1270644/php-truncate-text-at-word-boundaries ),也许更多... – Peter
尝试T他的链接,可以帮助你... http://stackoverflow.com/a/26098951/3944217 – edCoder