How to get first x chars from a string, without cutting off the last word?

后端 未结 13 1353
再見小時候
再見小時候 2020-11-28 10:24

I have the following string in a variable.

Stack Overflow is as frictionless and painless to use as we could make it.

I want to fetch first 28 characte

13条回答
  •  再見小時候
    2020-11-28 10:46

    From AlfaSky:

    function addEllipsis($string, $length, $end='…')
    {
        if (strlen($string) > $length)
        {
            $length -= strlen($end);
            $string  = substr($string, 0, $length);
            $string .= $end;
        }
    
        return $string;
    }
    

    An alternate, more featureful implementation from Elliott Brueggeman's blog:

    /**
     * trims text to a space then adds ellipses if desired
     * @param string $input text to trim
     * @param int $length in characters to trim to
     * @param bool $ellipses if ellipses (...) are to be added
     * @param bool $strip_html if html tags are to be stripped
     * @return string 
     */
    function trim_text($input, $length, $ellipses = true, $strip_html = true) {
        //strip tags, if desired
        if ($strip_html) {
            $input = strip_tags($input);
        }
    
        //no need to trim, already shorter than trim length
        if (strlen($input) <= $length) {
            return $input;
        }
    
        //find last space within length
        $last_space = strrpos(substr($input, 0, $length), ' ');
        $trimmed_text = substr($input, 0, $last_space);
    
        //add ellipses (...)
        if ($ellipses) {
            $trimmed_text .= '...';
        }
    
        return $trimmed_text;
    }
    

    (Google search: "php trim ellipses")

提交回复
热议问题