PHP - 文章摘要

时间:2012-04-29 09:23:06

标签: php function article summary

我正在编写新闻脚本,我想创建汇总函数,以便从全文内容中获取少量文本。该函数将获得200个全文字符,然后它将搜索这200个字符的最后一个空格。该函数还必须忽略任何html或其他代码,并仅显示全文内容的前200个字符。

哪个功能最适合我的问题以及如何执行此功能?

4 个答案:

答案 0 :(得分:5)

CodeIgniter框架中查看此辅助函数:

/**
* Character Limiter
*
* Limits the string based on the character count.  Preserves complete words
* so the character count may not be exactly as specified.
*
* @access   public
* @param    string
* @param    integer
* @param    string  the end character. Usually an ellipsis
* @return   string
*/

function character_limiter($str, $n = 500, $end_char = '…')
{
    if (strlen($str) < $n)
    {
        return $str;
    }

    $str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str));

    if (strlen($str) <= $n)
    {
        return $str;
    }

    $out = "";
    foreach (explode(' ', trim($str)) as $val)
    {
        $out .= $val.' ';

        if (strlen($out) >= $n)
        {
            $out = trim($out);
            return (strlen($out) == strlen($str)) ? $out : $out.$end_char;
        }
    }
 }

您可以使用以下功能:

echo character_limiter($text, 200);

如果您需要避免使用HTML标记,可以在调用strip_tags函数之前使用character_limiter函数。

答案 1 :(得分:3)

最好的解决方案显然是手动编辑器填充的数据库中指定的“摘要”字段。

将来会为您节省很多麻烦。

答案 2 :(得分:0)

有一个名为substr($string, $position, $length)的简单函数可以做到这一点。

一样使用它
$brief = substr($bigContent, 0, 200); //for 200 chars

答案 3 :(得分:0)

我使用以下函数来确保我的预告字符串的长度不超过指定的最大长度,但仍保留整个单词。

function teaser( $input, $length = 200)
{
  if( strlen($input) <= $length )
    return $input;

  $parts = explode(" ", $input);

  while( strlen( implode(" ", $parts) ) > $length )
    array_pop($parts);

  return implode(" ", $parts);
}

简短而简单。