在处理博客文章预览列表时,我遇到了这个问题。他们需要缩短内容,但不要通过保持打开状态来破坏任何 html 标签。
我听说 reg ex 不是一个好的选择。我正在寻找一些简单且有效的东西。
我一如既往地提前感谢您的帮助(所以最终成为解决此类问题的好地方:-)
Wordpress 具有生成内置到博客平台的摘录的功能,该平台从实际的博客文章中生成摘录。
您没有指定要用于修剪功能的语言,所以这里是 Wordpress 版本。如果需要,它可以很容易地修改和重新用于在 Wordpress 之外使用。
/**
* Generates an excerpt from the content, if needed.
*
* The excerpt word amount will be 55 words and if the amount is greater than
* that, then the string ' […]' will be appended to the excerpt. If the string
* is less than 55 words, then the content will be returned as is.
*
* The 55 word limit can be modified by plugins/themes using the excerpt_length filter
* The ' […]' string can be modified by plugins/themes using the excerpt_more filter
*
* @since 1.5.0
*
* @param string $text Optional. The excerpt. If set to empty, an excerpt is generated.
* @return string The excerpt.
*/
function wp_trim_excerpt($text = '') {
$raw_excerpt = $text;
if ( '' == $text ) {
$text = get_the_content('');
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[…]');
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
}
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}