(PHP)这个功能可以做得更紧凑吗?我使用此功能在主页上撰写帖子摘要。它在文本的限制长度之后找到第一个空格,因为它避免了ex的单词划分。我的笔记本很好 - >摘要:我的笔记本..它不应该是我的笔记......
function summary($posttext){
$limit = 60;
$spacepos = @strpos($posttext," ",$limit); //error handle for the texts shorter then 60 ch
while (!$spacepos){
$limit -= 10; //if text length shorter then 60 ch decrease the limit
$spacepos = @strpos($postext," ",$limit);
}
$posttext = substr($posttext,0,$spacepos)."..";
return $posttext;
}
答案 0 :(得分:0)
这样的事情将在最后一个完整的单词上分开而不会破坏这个词。
function limit_text($text, $len) {
if (strlen($text) < $len) {
return $text;
}
$text_words = explode(' ', $text);
$out = null;
foreach ($text_words as $word) {
if ((strlen($word) > $len) && $out == null) {
return substr($word, 0, $len) . "...";
}
if ((strlen($out) + strlen($word)) > $len) {
return $out . "...";
}
$out.=" " . $word;
}
return $out;
}
答案 1 :(得分:0)
我尝试打破没有拆分的话
function summary($posttext, $limit = 60){
if( strlen( $posttext ) < $limit ) {
return $posttext;
}
$offset = 0;
$split = explode(" ", $posttext);
for($x = 0; $x <= count($split); $x++){
$word = $split[$x];
$offset += strlen( $word );
if( ($offset + ($x + 1)) >= $limit ) {
return substr($posttext, 0, $offset + $x) . '...';
}
}
return $posttext;
}
答案 2 :(得分:0)
感谢您的帮助。我根据您的建议更正了我的代码。最终版本是:
function summary($posttext){
$limit = 60;
if (strlen($posttext)<$limit){
$posttext .= "..";
}else {
$spacepos = strpos($posttext," ",$limit);
$posttext = substr($posttext,0,$spacepos)."..";
}
return $posttext;
}