首頁 >後端開發 >php教程 >Googlechrome官方正式版本 自動產生文章摘要的程式碼[PHP 版本]

Googlechrome官方正式版本 自動產生文章摘要的程式碼[PHP 版本]

WBOY
WBOY原創
2016-07-29 08:36:511108瀏覽

實作內容:截斷一段含有HTML程式碼的文本,但不會出現圍堵標記沒有封閉的問題。
說明:這是PHP版的,用於在伺服器端使用,如果你需要一個客戶端版的,請閱讀下一篇 
我們在寫BLOG這樣的程式時經常需要顯示文章前一部分的,但是又怕不恰當的截斷破壞封閉標籤以造成整個文檔結構破壞,使用我的函數可以在要求不高的情況下解決這個問題。
大家應該考慮這個函數在服務端應用還是在客戶端應用。因為我考慮這個函數可能運行起來比較費機器,所以安全性要求不高的情況下可以放在客戶端上。
最好在資料表中單獨一個欄位放這個摘要,這樣對應的資料庫查詢也優化了。犧牲一點點空間換很多時間還是划算的。
再聊一下安全性問題,主要是內容安全性。如果客戶端意圖更改正常的摘要資訊的話,一般都是BLOG的主人才有這個權力,那麼他使得摘要和原文的一致性破壞就是他自己的事了。內容以外的安全性都可以在服務端解決。所以還是推薦在客戶端使用本函數。
核心程式碼

複製程式碼 程式碼如下:


// PHP 4.3 or BRIEF_LENGTH", 800);     //Word amount of the Briefing of an Article 
function Generate_Brief.$text){ len($text)   $Foremost = substr($text, 0, BRIEF_LENGTH); 
  $re = "/]* (>?)/i"; 
  $Single = "/BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT/i";    
  =$Stack array(); 
  preg_match_all($re,$Foremost,$matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE); 
  /*p : 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    == ""){ 
        $Elem = $matches[$i][2][0]; 
       ] !=""){ 
          continue; 
        }  
        array_push($posStack, $ matches[$i][2][1]);          
        if($matches[$i][3][0] =="") break if($matches[$i][  $StackTop = $ Stack[count($Stack)-1]; 
        $End = strtoupper($matches[$i][2][0]); 
   { 
          array_pop($Stack); 
            "){ 
            $Foremost = $Foremost .">"; 
          } 
        } 
   ift($posStack) - 1;    
  $Foremost = substr($Foremost,0,$cutpos ); 
  return $Foremost; 
}; 

若遇到問題(發現上面的函數對多位元組字元集支援得不好) 不耐煩試試下面的這個!

複製代碼 代碼如下:


function Generate_Brief($text){ 
  global $Briefing_Length; 
  mb_regex_encoding ("UTF-8"); 
  if(mb_strlen($text)   $Formb_c=  "]*(>?)"; 
  $Single = "/BASE|META|LINK|HR|BR|PARAM| IMG|AREA|INPUT|BR/i";    
  $Stack = array(); $posStack = array(); 
  pos = mb_ereg_search_pos()){ 
    $match = mb_ereg_search_getregs(); 
    / ] : A "/" charactor indicating whether current "<.. .>" Friction is Closing Part 
        $matche[2] : Element Name. 
      
    */ 
    if( $match[1]==""){ 
        $Elem = $match[2]; 
        >          continue; 
        } 
        y_push($posStack, $pos[0]);          
    }else{ 
       }else{ 
     Stack[count($Stack)-1]; 
        $End = mb_strtoupper($match[2]); 
       array_pop($ Stack); 
          array_pop($posStack); 
          = $Foremost.">"; 
          } 
        } 
    } 
  } 
  $cutpos = array_shift($posStack) - 1;    >  return $Foremost ; 
}; 


以上就介紹了谷歌chrome官方正式版本 自動生成文章摘要的程式碼[PHP 版本],包括了谷歌chrome官方正式版本方面的內容,希望對PHP教程有興趣的朋友有所幫助。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn