我是靠谱客的博主 细腻学姐,最近开发中收集的这篇文章主要介绍php文章摘要,PHP文章摘要生成方法(函数),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PHP文章摘要生成方法(函数)

文章生成摘要的方法有多种,可以用JS在客户端生成,也可以在服务器端生成,当然更不排除在数据库中加一个摘要字段,在发布文章的时候自行设置。以下是在服务器端生成时的方法。

我们在写BLOG时经常需要显示文章前一部分,但是又怕不恰当截断破坏封闭标签以造成整个文档结构破坏,使用我们的函数可以在要求不高的情况下解决这个问题。

这了防止文章系统在截取摘要的时候容易把HTML标签分割,导致意想不到的错误,因此特意完善了以下函数!希望能给你带来启示,并且欢迎排错指点!

function text_zhaiyao($text,$length){ //文章摘要生成函数 $test:内容 $length:摘要长度

global $Briefing_Length;

mb_regex_encoding("UTF-8");

if(mb_strlen($text) <= $length ) return $text;

$Foremost = mb_substr($text, 0, $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;

}

欢迎排错并改进!

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: PHP文章摘要生成方法(函数) http://www.chhua.com/web-note628

相关笔记

更多

最后

以上就是细腻学姐为你收集整理的php文章摘要,PHP文章摘要生成方法(函数)的全部内容,希望文章能够帮你解决php文章摘要,PHP文章摘要生成方法(函数)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部