Automatically generate article abstracts [JavaScript version].
When we write programs like BLOG, we often need to display the previous part of the article, but we are afraid that improper truncation will destroy the closing tag and cause damage to the entire document structure. Using my function can solve this problem without high requirements. question.
Everyone should consider whether this function is applied on the server side or on the client side. Because I consider that this function may be more machine-intensive to run,
so it can be placed on the client if security requirements are not high.
It is best to put this summary in a separate field in the data table, so that the corresponding database query is also optimized. Sacrificing a little space in exchange for a lot of time is still a good deal.
Let’s talk about security issues again, mainly content security. If the client intends to change the normal summary information, generally the owner of the BLOG has this power, so it is his own business to destroy the consistency between the summary and the original text. Security other than content can be solved on the server side. Therefore, it is recommended to use this function on the client side.
Core code:
I recently applied it and found that the above function does not support multi-byte character sets well, so I rewrote it.
If you encounter problems, you might as well try the following function.
function Generate_Brief($text){
global $Briefing_Length;
mb_regex_encoding("UTF-8");
if(mb_strlen($text) <= BRIEF_LENGTH ) return $text;
$Foremost = mb_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)[^>]*(>?)";
$Single = "/BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|BR/i";
$Stack = array(); $posStack = array();
mb_ereg_search_init($Foremost, $re, 'i');
while($pos = mb_ereg_search_pos()){
$match = mb_ereg_search_getregs();
/* [Child-matching Formulation]:
$matche[1] : A "/" charactor indicating whether current "<...>" Friction is
Closing Part
$matche[2] : Element Name.
$matche[3] : Right > of a "<...>" Friction
*/
if($match[1]==""){
$Elem = $match[2];
if(mb_eregi($Single, $Elem) && $match[3] !=""){
continue;
}
array_push($Stack, mb_strtoupper($Elem));
array_push($posStack, $pos[0]);
}else{
$StackTop = $Stack[count($Stack)-1];
$End = mb_strtoupper($match[2]);
if(strcasecmp($StackTop,$End)==0){
array_pop($Stack);
array_pop($posStack);
if($match[3] ==""){
$Foremost = $Foremost.">";
}
}
}
}
$cutpos = array_shift($posStack) - 1;
$Foremost = mb_substr($Foremost,0,$cutpos,"UTF-8");
return $Foremost;
};欢迎大家找错误。谢谢。
以上就介绍了自动控制原理 胡寿松 PHP版自动生成文章摘要,包括了自动控制原理 胡寿松方面的内容,希望对PHP教程有兴趣的朋友有所帮助。