澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2019-09-29 12:16 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

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;
};

实现内容:截断一段含有HTML代码的文书,不过不会并发堵塞标识未有封闭的难点。
表明:那是PHP版的,用于在劳动器端使用,借让你须要叁个客户端版的,请阅读下一篇 
咱俩在写BLOG那样的次序时平时必要展现小说前有的的,然而又怕不适当的截断破坏密封标签以变成整个文书档案结构损坏,使用作者的函数能够在务求不高的事态下消除这么些难题。
大家应该思虑这几个函数在服务端应用依然在顾客端应用。因为作者考虑那么些函数大概运转起来相比较费机器,所以安全性要求不高的图景下得以放在客商端上。
最佳数据表中独立一个字段放那个摘要,这样相应的数据库查询也优化了。殉国一丝丝空间换相当多时刻只怕划得来的。
再聊一下安全性难题,主假如内容安全性。假若顾客端意图退换寻常的摘要消息的话,平时都以BLOG的全数者才有这么些权力,那么他使得摘要和原著的一致性破坏就是她协和的事了。内容以外的安全性都得以在服务端化解。所以照旧引入在顾客端应用本函数。
大旨代码

自动生成文摘[JavaScript 版本]。
我们在写BLOG那样的前后相继时平日索要出示小说前有的的,但是又怕不妥善的截断破坏密闭标签以至使整
个文书档案结构损坏,使用本身的函数能够在讲求不高的境况下消除那个主题素材。

复制代码 代码如下:

世家应该思念这些函数在服务端应用依然在顾客端应用。因为自身着想这些函数可能运营起来相比较费机器,
于是安全性供给不高的情事下得以投身客户端上。

// 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; 
}; 

最棒数据表中独立二个字段放那一个摘要,那样相应的数据库查询也优化了。捐躯一丝丝上空换非常多日子还
是一箭双雕的。

若碰到难点(开掘下边包车型客车函数对多字节字符集帮忙得不得了) 不烦试试上面包车型地铁这么些!

再聊一下安全性难点,首假使内容安全性。借使客商端意图更换平常的摘要音信的话,日常都以BLOG的主
人才有那些权力,那么她使得摘要和原来的文章的一致性破坏便是她和睦的事了。内容以外的安全性都得以在服
务端化解。所以仍然引入在客商端应用本函数。

复制代码 代码如下:

主导代码:
多年来利用了一下,开掘上边的函数对多字节字符集帮衬得不得了,因而重写了须臾间。

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:PHP版自动生成文章摘要,自动生成文章摘要的代

关键词: 澳门威利斯人