我正在研究新闻脚本,我想创建摘要函数以从全文内容中获取很少的文本。该函数将获得200个全文字符,然后搜索这200个字符的最后一个空格。该函数还必须忽略任何html或其他代码,并只显示全文内容的前200个字符。PHP - 文章摘要
哪个函数最适合我的问题以及如何实现该功能?
我正在研究新闻脚本,我想创建摘要函数以从全文内容中获取很少的文本。该函数将获得200个全文字符,然后搜索这200个字符的最后一个空格。该函数还必须忽略任何html或其他代码,并只显示全文内容的前200个字符。PHP - 文章摘要
哪个函数最适合我的问题以及如何实现该功能?
结帐从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
函数。
最好的解决方案显然是手动编辑器填充的数据库中指定的“摘要”字段。
这将为您节省很多头痛的未来。
我也有这个领域,但这是后备如果文章的作者忘记或不想进入总结。 – user1257255 2012-04-29 09:32:26
有一个简单的函数substr($string, $position, $length)
,可以做到这一点。
使用它像
$brief = substr($bigContent, 0, 200); //for 200 chars
我相信它需要比简单的'substr'更多的逻辑。这个想法是在最后一个单词之后结束文本,以适应200的长度,否则文章可能会在一个单词的中间结束。 – 2012-04-29 09:37:27
@mazzucci,哦..请不要着手这可能是多么复杂,我已经编写了一个忙碌的模块。 :P – Starx 2012-04-29 09:58:27
我用下面的功能,以确保我的传情字符串的长度不超过规定的最大长度,但仍保持完整的词。
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);
}
简而言之。
如果您觉得需要在缩短字符串的末尾加上“...”之类的内容,只需将返回行扩展为:'return implode(“”,$ parts)。 “......”;' – Repox 2012-04-29 09:40:32
在发布您的问题之前,您有没有尝试过任何东西? – ilanco 2012-04-29 09:26:43
不,因为我不知道哪个函数最适合这样的问题,例如这个 – user1257255 2012-04-29 09:28:38
你必须写。 – 2012-04-29 09:29:18