如何正确限制内容和剥离Html?

时间:2012-05-19 作者:Dave

我已经使用此代码很长时间了:

$temp_arr_content = explode(
    " ",
    substr(
        strip_tags(
            get_the_content()
        ),
        0,
        720
    )
);
$temp_arr_content[count( $temp_arr_content ) - 1] = "";
$display_arr_content = implode( " ", $temp_arr_content );
echo $display_arr_content;
if( strlen( strip_tags( get_the_content() ) ) > 0 )
    echo "...";
为了将我的内容限制为720个字符,并从中删除html,今天我在新主题中再次使用了它,但我注意到它还输出html代码(html代码不起作用,但显示在内容中)

我在主题中也使用了此代码:

$excerpt = get_the_excerpt();
echo string_limit_words( $excerpt, 55 );
这是我函数中的代码。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 );
}
然而,为了限制字数并剥离HTML,当我将55改为150时,代码不起作用,仍然显示55个字<有人能帮我解决这个问题吗?谢谢

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

首先,我不会修改content. 从语义上讲,您正在处理excerpt, 所以让我们把重点放在这一点上。

其次,为了限制摘录返回的字数,simply filter excerpt_length:

<?php
function wpse52673_filter_excerpt_length( $length ) {
    // Return (integer) value for
    // word-length of excerpt
    return 150;
}
add_filter( \'excerpt_length\', \'wpse52673_filter_excerpt_length\' );
?>
使用的附加好处the_excerpt() 对于自动生成的摘录,no HTML is parsed. 因此,如果不使用用户定义的摘录,那么就完成了。

但是,如果您确实使用了用户生成的摘录,但仍然想去掉HTML标记,只需删除any or all of the following filters that are applied to the_excerpt:

add_filter( \'the_excerpt\',     \'wptexturize\'      );
add_filter( \'the_excerpt\',     \'convert_smilies\'  );
add_filter( \'the_excerpt\',     \'convert_chars\'    );
add_filter( \'the_excerpt\',     \'wpautop\'          );
add_filter( \'the_excerpt\',     \'shortcode_unautop\');
要删除一个,只需调用,例如:

remove_filter( \'the_excerpt\', \'wptexturize\' );

结束

相关推荐

不显示页面的手动摘录的_excerpt()

我已经为我的wordpress主题中的页面启用了摘录功能-add_action( \'init\', \'my_add_excerpts_to_pages\' ); function my_add_excerpts_to_pages() { add_post_type_support( \'page\', \'excerpt\' ); } 这在通过管理区域添加或更新页面时启用了摘录框,这正是我所期望的。然后我尝试在我的网站主页上显示每个摘