-
-
// PHP 4.3 以降が必要 - define("BRIEF_LENGTH", 800); //記事のブリーフィングの文字数
- function Generate_Brief($text){
- global $Briefing_Length;
- if(strlen($text) <= BRIEF_LENGTH ) $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 = 配列();
- preg_match_all($re,$Foremost,$matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
- /* [子マッチング仕様]:
- $matches[$i][1] : 現在の "<...>" かどうかを示す "/" 文字摩擦は終了部分です
- $matches[$i][2] : 要素名。
- $matches[$i][3] : 右 > 「<...>」摩擦 */
- 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] !=""){
- 続ける;
- }
- array_push($Stack, strtoupper($matches[$i][2][0]));
- array_push($posStack, $matches[$i][2][1]);
- if($matches[$i][3][0] =="") ブレーク;
- }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);
- $Foremost を返します;
- };
代コード2:
- function Generate_Brief($text ){
- グローバル $Briefing_Length;
- mb_regex_encoding("UTF-8");
- if(mb_strlen($text) <= BRIEF_LENGTH ) $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 = 配列();
- mb_ereg_search_init($Foremost, $re, 'i');
- while($pos = mb_ereg_search_pos()){
- $match = mb_ereg_search_getregs();
- /* [子マッチング式]:
- $matche[1] : 現在の "<...>" かどうかを示す "/" 文字摩擦は終了部分です
- $matche[2] : 要素名。
- $matche[3] : 正しい > 「<...>」摩擦
- */
- if($match[1]==""){
- $Elem = $match[2];
- if(mb_eregi($Single, $Elem) && $match[3] !=""){
- 続ける;
- }
- 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");
- $Foremost を返します;
- };
- ?>
-
-
复制コード
ここまで、自動生成文章摘要のphp代コードの両方の方法都介绍完了、希望对您有帮助。
编辑推荐:
php摘要生成関数数(自定义,無乱コード)
|