| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | package controllersimport (	"github.com/lifei6671/godoc/models"	"github.com/lifei6671/godoc/conf"	"github.com/lifei6671/godoc/utils"	"github.com/astaxie/beego"	"strings"	"regexp"	"strconv")type SearchController struct {	BaseController}func (c *SearchController) Index()  {	c.Prepare()	c.TplName = "search/index.tpl"	keyword := c.GetString("keyword")	pageIndex,_ := c.GetInt("page",1)	c.Data["BaseUrl"] = c.BaseUrl()	if keyword != "" {		c.Data["Keyword"] = keyword		member_id := 0		if c.Member != nil {			member_id = c.Member.MemberId		}		search_result,totalCount,err := models.NewDocumentSearchResult().FindToPager(keyword,pageIndex,conf.PageSize,member_id)		if err != nil {			beego.Error(err)			return		}		if totalCount > 0 {			html := utils.GetPagerHtml(c.Ctx.Request.RequestURI, pageIndex, conf.PageSize, totalCount)			c.Data["PageHtml"] = html		}else {			c.Data["PageHtml"] = ""		}		if len(search_result) > 0 {			for _,item := range search_result {				item.DocumentName = strings.Replace(item.DocumentName,keyword,"<em>" + keyword + "</em>",-1)				if item.Description != "" {					src := item.Description					//将HTML标签全转换成小写					re, _ := regexp.Compile("\\<[\\S\\s]+?\\>")					src = re.ReplaceAllStringFunc(src, strings.ToLower)					//去除STYLE					re, _ = regexp.Compile("\\<style[\\S\\s]+?\\</style\\>")					src = re.ReplaceAllString(src, "")					//去除SCRIPT					re, _ = regexp.Compile("\\<script[\\S\\s]+?\\</script\\>")					src = re.ReplaceAllString(src, "")					//去除所有尖括号内的HTML代码,并换成换行符					re, _ = regexp.Compile("\\<[\\S\\s]+?\\>")					src = re.ReplaceAllString(src, "\n")					//去除连续的换行符					re, _ = regexp.Compile("\\s{2,}")					src = re.ReplaceAllString(src, "\n")					r := []rune(src)					if len(r) > 100 {						src = string(r[:100])					}else{						src = string(r)					}					item.Description = strings.Replace(src, keyword, "<em>" + keyword + "</em>", -1)				}				if item.Identify == ""{					item.Identify = strconv.Itoa(item.DocumentId)				}				if item.ModifyTime.IsZero() {					item.ModifyTime = item.CreateTime				}			}		}		c.Data["Lists"] = search_result	}}
 |