PHP - 这个过程更紧凑的功能?

时间:2013-12-09 14:38:35

标签: php function summary

(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;
}

3 个答案:

答案 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;   
}