php,计算字符并删除超过140个字符

时间:2011-05-14 12:02:31

标签: php count trim

我需要一个PHP函数来计算一个短语的字符数。如果短语长于“140”字符,则此函数应删除所有其他字符,并在短语的末尾添加三个点。 例如,我们有。

$message= "I am what I am and you are what you are etc etc etc etc"

如果长度超过140个字符,则

$message= "I am what I am and you are what you are..."

这可能吗?怎么样? 谢谢

5 个答案:

答案 0 :(得分:9)

如果你想成为“单词敏感”(即不要在单词的中间打破),你可以使用wordwrap().

答案 1 :(得分:5)

if(strlen($str) > 140){
   $str =  substr($str, 0, 140).'...';
}

答案 2 :(得分:5)

此变体将使用必要的字符集(例如utf-8)正确,并将尝试按空格剪切,以免破坏单词:

$charset = 'utf-8';
$len = iconv_strlen($str, $charset);
$max_len = 140;
$max_cut_len = 10;
if ($len > $max_len)
{
    $str = iconv_substr($str, 0, $max_len, $charset);
    $prev_space_pos = iconv_strrpos($str, ' ', $charset);
    if (($max_len-$prev_space_pos) < $max_cut_len) $str = iconv_substr($str, 0, $prev_space_pos, $charset);
    $str .= '...';
}

答案 3 :(得分:2)

那将是:

/**
 * trim up to 140 characters
 * @param string $str the string to shorten
 * @param int $length (optional) the max string length to return
 * @return string the shortened string
 */
function shorten($str, $length = 140) {
    if (strlen($str) > $length) {
        return substr($str, 0, $length).'...';
    }
    return $str;
}

/**
 * trim till last space before 140 characters
 * @param string $str the string to shorten
 * @param int $length (optional) the max string length to return
 * @return string the shortened string
 */
function smartShorten($str, $length = 140) {
    if (strlen($str) > $length) {
        if (false === ($pos = strrpos($str, ' ', $length))) { // no space found; cut till $length
            return substr($str, 0, $length).'...';
        }
        return substr($str, 0, strrpos($str, ' ', $length)).'...';
    }
    return $str;
}

答案 4 :(得分:0)

这是我经常使用的功能

function shorten($str,$l = 30){
    return (strlen($str) > $l)? substr($str,0,$l)."...": $str;
}

您可以将默认长度更改为您想要的任何内容