php文章摘要 [源程序]
// PHP 4.3 or above needed define("BRIEF_LENGTH", 800); //Word amount of the Briefing of an Article function Generate_Brief($text){ global $Briefing_Length; if(strlen($text) <= BRIEF_LENGTH ) return $text; $Foremost = substr($text, 0, BRIEF_LENGTH); $re = "/<(\/?)(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|OBJECT|A|UL|OL|LI|BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN)[^>]*(>?)/i"; $Single = "/BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT/i"; $Stack = array(); $posStack = array(); preg_match_all($re,$Foremost,$matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE); /* [Child-matching Specification]: $matches[$i][1] : A "/" charactor indicating whether current "<...>" Friction is Closing Part $matches[$i][2] : Element Name. $matches[$i][3] : Right > of a "<...>" Friction */ for($i = 0 ; $i < count($matches); $i++){ if($matches[$i][1][0] == ""){ $Elem = $matches[$i][2][0]; if(preg_match($Single,$Elem) && $matches[$i][3][0] !=""){ continue; } array_push($Stack, strtoupper($matches[$i][2][0])); array_push($posStack, $matches[$i][2][1]); if($matches[$i][3][0] =="") break; }else{ $StackTop = $Stack[count($Stack)-1]; $End = strtoupper($matches[$i][2][0]); if(strcasecmp($StackTop,$End)==0){ array_pop($Stack); array_pop($posStack); if($matches[$i][3][0] ==""){ $Foremost = $Foremost.">"; } } } } $cutpos = array_shift($posStack) - 1; $Foremost = substr($Foremost,0,$cutpos); return $Foremost; }
本文地址:http://www.phprm.com/code/a3f519311322b372ab94b6041417a493.html
转载随意,但请附上文章地址:-)