excerpt in characters

时间:2012-10-16 作者:Marcin

我在函数中有代码。php:

function string_limit_words($string, $word_limit)
{
  $words = explode(\' \', $string, ($word_limit + 1));
  if(count($words) > $word_limit)
  array_pop($words);
  return implode(\' \', $words);
}
但我需要限制摘录的字符数,你能帮我吗?

4 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

我在我最后的一个项目中使用了此代码:

function ng_get_excerpt( $count ){
  $permalink = get_permalink( $post->ID );
  $excerpt = get_the_content();
  $excerpt = strip_tags( $excerpt );
  $excerpt = mb_substr( $excerpt, 0, $count );
  $excerpt = mb_substr( $excerpt, 0, strripos( $excerpt, " " ) );
  $excerpt = rtrim( $excerpt, ",.;:- _!$&#" );
  $excerpt = $excerpt . \'<a href="\'.$permalink.\'" style="text-decoration: none;">&nbsp;(...)</a>\';
  return $excerpt;
}
我从这里得到的:

http://wordpress.org/support/topic/limit-excerpt-length-by-characters

https://stackoverflow.com/questions/10923955/make-function-that-limits-text-not-show-last-punctuation-mark

它的优点是不允许在末尾加标点符号,并以最后一个完整的单词结尾

按照建议使用过滤器@medhamza7@bainternet@fuxia 最好是。

SO网友:fuxia

使用该功能utf8_truncate() from this answer 然后奋力拼搏wp_trim_excerpt().

未测试的示例代码:

add_filter( \'excerpt_more\', \'wpse_69436_excerpt_more\' );

function wpse_69436_excerpt_more( $more )
{
    add_filter( \'wp_trim_excerpt\', \'wpse_69436_trim_excerpt\' );
    // we remove the more text here
    return \'\';
}

function wpse_69436_trim_excerpt( $excerpt )
{
    return utf8_truncate( $excerpt, 300 );
}

SO网友:Bainternet

WordPress有一个过滤器,可以方便地将其命名为extracpt\\u length,它接受许多字符,因此:

function custom_excerpt_length( $length ) {
    return 50;
}
add_filter( \'excerpt_length\', \'custom_excerpt_length\', 999 );
将50更改为您想要的任何限制。

根据@toscho注释更新:

上述解决方案同样适用于文字,而不适用于字符,因此这里有一个简单的解决方案:

add_filter(\'the_excerpt\',\'excerpt_char_limit\');
function excerpt_char_limit($e){
    return substr($e,0,50);
}

SO网友:mohamed amine hamza

要获得更好的方法,您可以使用get_the_excerpt 过滤器:

function get_excerpt($excerpt="",$limit=140){

    $excerpt = preg_replace(" (\\[.*?\\])",\'\',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = mb_substr($excerpt, 0, $limit);
    $excerpt = mb_substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( \'/\\s+/\', \' \', $excerpt));
    $excerpt = $excerpt.\'...\';
    return $excerpt;
}   
add_filter(\'get_the_excerpt\',"get_excerpt");
更改$limit=140 设置为所需的字符数。如果您想以不同的方式:

add_filter(\'get_the_excerpt\',function ($excerpt="",$limit=140){

    $excerpt = preg_replace(" (\\[.*?\\])",\'\',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = mb_substr($excerpt, 0, $limit);
    $excerpt = mb_substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( \'/\\s+/\', \' \', $excerpt));
    $excerpt = $excerpt.\'...\';
    return $excerpt;
});
这将避免任何与现有函数名类似的冲突get_excerpt.

结束

相关推荐

Using the_excerpt() on a page

我一直在尝试利用PHP摘录函数从她最近的博客文章中调用main landing page 无济于事。有什么想法吗?<div id=\"home_news\" class=\"prefix_9 grid_3\"> <div id=\"newsbox\" style=\"display: block;\"> <div id=\"news\"> <h2>Welcome</h2>&#