缩短字符串而不切断最后一个单词的功能

时间:2013-09-17 作者:Eckstein

这段代码非常适合将文本的一部分缩短到单词的最近端,但如果字符串短于剪切长度,则会将最后一个单词切掉。有谁能告诉我,在这种情况下,应该做些什么改变,使它不至于切断最后一个字?

function shortened_description($cutlength) {
    $content   = get_field(\'event_short_description\');
    $charcount = strlen($content);
    $cutlength = $cutlength;
    $shorter   = substr($content, 0, strrpos(substr($content, 0, $cutlength), \' \'));
    if ($charcount >= $cutlength) {
        echo $shorter . \'... <a href="\' . get_permalink() . \'">more ></a>\';
    } //$charcount >= $cutlength
    else {
        echo $shorter;
    }
}

1 个回复
最合适的回答,由SO网友:Vinod Dalvi 整理而成

有多种方法可以实现这一点,如下所列。

使用wordwrap() 功能:

function shortened_description($cutlength) {
    $content   = get_field(\'event_short_description\');
    $charcount = strlen($content);
    $content = wordwrap($content, 28);
    $content = explode("\\n", $content);
    $shorter = $content[0];

    if ($charcount >= $cutlength) {
        echo $shorter . \'... <a href="\' . get_permalink() . \'">more ></a>\';
    } //$charcount >= $cutlength
    else {
        echo $shorter;
    }

}
使用preg_match() 功能:

function shortened_description($cutlength) {
    $content   = get_field(\'event_short_description\');
    $charcount = strlen($content);

    if ($charcount >= $cutlength) {
    preg_match("/^.{1,$cutlength}\\b/s", $content, $match);
        echo $match[0] . \'... <a href="\' . get_permalink() . \'">more ></a>\';
    } //$charcount >= $cutlength
    else {
        echo $content;
    }

}
使用wp_trim_words() 功能:

(注意,它将根据作为参数传递的字数修剪字符串)

function shortened_description($cutlength) {
    $content   = get_field(\'event_short_description\');
    $shorter = wp_trim_words($content, $cutlength, \'... <a href="\' . get_permalink() . \'">more ></a>\');
    echo $shorter;
}

结束

相关推荐

Remove Ellipses from Excerpt

我对摘录使用了两个自定义函数,第一个函数修改摘录的长度,第二个函数允许我以两种方式使用\\u摘录-带有“阅读更多”链接,只要调用\\u摘录时包含适当的代码,就不必使用(see here).当我使用传统的the\\u摘录时,它会在其后的括号中生成三个省略号[…]-如何删除这些括号和省略号,以便在帖子中调用时只显示\\u摘录本身,而不显示任何链接,但仍使用下面的代码在其他地方创建“阅读更多”链接?// Excerpt // Changing excerpt length fun