golang实现php的内置函数strip_tags功能代码案例

golang自带的函数很少不像php自带了很多功能强大实用的内置函数,本文为大家带来go语言实现php的内置函数strip_tags功能代码案例,希望能帮到大家。

package main

import (
   "bytes"
   "fmt"
   "regexp"
   "strings"

   "golang.org/x/net/html"
)

func stripTags(s string, tags []string) (string, error) {
   var buf bytes.Buffer
   doc, err := html.Parse(strings.NewReader(s))
   if err != nil {
      return "", err
   }
   //大写转成小写
   for i, tag := range tags {
      tags[i] = html.EscapeString(tag)
   }
   var f func(*html.Node)
   f = func(n *html.Node) {
      if n.Type == html.ElementNode && contains(tags, n.Data) {
         buf.WriteString(fmt.Sprintf("<%s", n.Data))
         for _, attr := range n.Attr {
            buf.WriteString(fmt.Sprintf(` %s="%s"`, attr.Key, attr.Val))
         }
         buf.WriteString(">")
      } else if n.Type == html.TextNode {
         buf.WriteString(n.Data)
      }
      for c := n.FirstChild; c != nil; c = c.NextSibling {
         f(c)
      }
      if n.Type == html.ElementNode && contains(tags, n.Data) {
         buf.WriteString(fmt.Sprintf("</%s>", n.Data))
      }
   }
   f(doc)
   str := buf.String()
   re := regexp.MustCompile(`<br>`)
   str = re.ReplaceAllString(str, "")
   re = regexp.MustCompile(`</img>`)
   str = re.ReplaceAllString(str, "")
   return str, nil
}

func contains(arr []string, str string) bool {
   for _, a := range arr {
      if a == str {
         return true
      }
   }
   return false
}
func main() {
   htmlStr := `
<meta name="renderer" content="webkit">
<meta name="force-rendering" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1">
<meta name="applicable-device" content="pc,mobile">
    <!-- 广告位AD2  --><i>23232,</i>
                   <div class="art-content">
       <p>golang实现php的strip_tags函数功能代码案例
</p><h2>golang实现php的strip_tags函数功能代码案例</h2>
<p>golang实现php的strip_tags函数功能代码案例<br/><p><img src="http://66yl.cn/zb_users/LingduThumb/15c72d834b3821a3baaff09e7a05e355.png" title="golang实现php的strip_tags函数功能代码案例"></p><h2>新天堂2什么时候转副职</h2>
 <div class="topic-content">
                   </div>     `
   tags := []string{"p", "meta", "br"}
   
   result, err := stripTags(htmlStr, tags)
   if err != nil {
      fmt.Println("Error:", err)
   }
   fmt.Println(result)
}

golang实现php函数strip_tags代码运行图.jpg

上图是站长本地运行无错的图,有需求的朋友可以复制到相关测试环境运行起来看看是不是所需要的功能,代码处理过程保留了所有txt文本,这个自行根据需求修改代码。

转载请注明来自本站(66娱乐网)
66优乐网 » golang实现php的内置函数strip_tags功能代码案例