在Golang中压缩HTML以删除额外的空格和换行符。

huangapple go评论83阅读模式
英文:

minify html in golang to delete extra spaces and next line characters

问题

如何创建 HTML 压缩器?

package main

import (
	"fmt"
)

func HtmlMinify(html string) string {
	// todo: 压缩 html
	return html
}

func main() {

	htmlExample := `<li>
						<a>Hello</a>
					</li>`
	minifiedHtml := HtmlMinify(htmlExample)
	fmt.Println(minifiedHtml) // 期望输出 `<li><a>Hello</a></li>`
}

输出结果:

<li>
						<a>Hello</a>
					</li>

但我希望它是这样的:

<li><a>Hello</a></li>

playground

英文:

How to create html minifier?

package main

import (
	&quot;fmt&quot;
)

func HtmlMinify(html string) string {
	// todo: minify html
	return html
}

func main() {

	htmlExample := `&lt;li&gt;
						&lt;a&gt;Hello&lt;/a&gt;
					&lt;/li&gt;`
	minifiedHtml := HtmlMinify(htmlExample)
	fmt.Println(minifiedHtml) //  `&lt;li&gt;&lt;a&gt;Hello&lt;/a&gt;&lt;/li&gt;` is wanted
}

outputs:

&lt;li&gt;
						&lt;a&gt;Hello&lt;/a&gt;
					&lt;/li&gt;

But I want it to be

&lt;li&gt;&lt;a&gt;Hello&lt;/a&gt;&lt;/li&gt;

playground

答案1

得分: 12

你的示例可能只涉及删除空格,但是压缩HTML比这复杂一些(例如,你不希望删除字符串内部实际上有意义的空格)。

你可以在以下链接中看到示例:

英文:

Your example could involve simply removing spaces, but minifying html is a bit more complex than that (for instance, you don't want to remove spaces where they actually matters, like within a string).

You can see an example in:

答案2

得分: 9

我使用了tdewolff/minify库进行了以下代码的压缩:

package main

import (
	"bytes"
	"fmt"
	"github.com/tdewolff/minify"
)

func HtmlMinify(html string) string {
	m := minify.NewMinifierDefault()
	b := &bytes.Buffer{}
	if err := m.HTML(b, bytes.NewBufferString(html)); err != nil {
		panic(err)
	}
	return b.String()
}

func main() {

	htmlExample := `<li>
						<a>Hello</a>
					</li>`
	minifiedHtml := HtmlMinify(htmlExample)
	fmt.Println(minifiedHtml) // <li><a>Hello</a>
}

以上代码是一个使用tdewolff/minify库进行HTML压缩的示例。

英文:

I used tdewolff/minify:

package main

import (
	&quot;bytes&quot;
	&quot;fmt&quot;
	&quot;github.com/tdewolff/minify&quot;
)

func HtmlMinify(html string) string {
	m := minify.NewMinifierDefault()
	b := &amp;bytes.Buffer{}
	if err := m.HTML(b, bytes.NewBufferString(html)); err != nil {
		panic(err)
	}
	return b.String()
}

func main() {

	htmlExample := `&lt;li&gt;
						&lt;a&gt;Hello&lt;/a&gt;
					&lt;/li&gt;`
	minifiedHtml := HtmlMinify(htmlExample)
	fmt.Println(minifiedHtml) //  &lt;li&gt;&lt;a&gt;Hello&lt;/a&gt;
}

huangapple
  • 本文由 发表于 2014年12月20日 13:43:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/27577385.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定