// 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)
$Foremost = substr($text, 0, BRIEF_LENGTH);
$re = "/]*(>?)/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
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;
};