-
Notifications
You must be signed in to change notification settings - Fork 3
/
html.go
61 lines (46 loc) · 1.27 KB
/
html.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package util
import (
"fmt"
"html"
"regexp"
"strings"
)
// 解析 Md 文本中的图片信息
func ParseHtmlImage(text string) string {
reg, _ := regexp.Compile(`<img src=[\'|\"](.*?)[\'|\"].*?[\/]?>`)
items := reg.FindAllStringSubmatch(text, 1)
for _, item := range items {
return item[1]
}
return ""
}
// 解析 Md 文本中的所有图片信息
func ParseHtmlImageAll(text string) []string {
reg, _ := regexp.Compile(`<img src=[\'|\"](.*?)[\'|\"].*?[\/]?>`)
list := make([]string, 0)
for _, item := range reg.FindAllStringSubmatch(text, -1) {
list = append(list, item[1])
}
return list
}
var amReg = regexp.MustCompile(`<a href="([^"]*)" alt="link"[^>]*>(.*?)</a>|<img src="([^"]*)" alt="img"[^>]*/>`)
func EscapeHtml(value string) string {
items := make(map[string]string)
for index, v := range amReg.FindAllString(value, -1) {
val := fmt.Sprintf("{#%d#}", index)
items[val] = v
value = strings.Replace(value, v, val, -1)
}
value = html.EscapeString(value)
if len(items) == 0 {
return value
}
for k, v := range items {
value = strings.Replace(value, k, v, -1)
}
return value
}
var imgReg = regexp.MustCompile(`<img .*?>`)
func ReplaceImgAll(value string) string {
return strings.TrimSpace(string(imgReg.ReplaceAll([]byte(value), []byte(""))))
}