我正在研究新聞腳本,我想創建摘要函數以從全文內容中獲取很少的文本。該函數將獲得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