返回顶部
首页 > 资讯 > 后端开发 > GO >Golang html.Parse重写href查询字符串以包含&
  • 685
分享到

Golang html.Parse重写href查询字符串以包含&

2024-02-10 05:02:10 685人浏览 泡泡鱼
摘要

PHP小编子墨在这里为大家介绍一个有关golang的小技巧。在使用html.Parse解析HTML时,有时我们需要重写href的查询字符串,以包含&符号。这个技巧可以帮助我们在

PHP小编子墨在这里为大家介绍一个有关golang的小技巧。在使用html.Parse解析HTML时,有时我们需要重写href的查询字符串,以包含&符号。这个技巧可以帮助我们在处理HTML链接时更加灵活和方便,提升开发效率。接下来,我们将详细讲解如何使用该技巧,并且给出示例代码,希望对大家有所帮助。

问题内容

我有以下代码:

package main

import (
    "os"
    "strings"

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

func main() {
    myhtmldocument := `




    wtf

`

    doc, _ := html.parse(strings.newreader(myhtmldocument))
    html.render(os.stdout, doc)
}

html.render 函数产生以下输出:





    WTF

为什么要重写查询字符串并将 & 转换为 & (在 bar 和 baz 之间)?

有办法避免这种行为吗?

我正在尝试进行模板转换,但我不希望它破坏我的网址。

解决方法

html.parse 想要生成有效的 html,并且 html 规范规定 href 属性中的与号必须进行编码。

https://www.w3.org/tr/xhtml1/guidelines .html#c_12

在 sgml 和 xml 中,与字符(“&”)声明实体引用的开始(例如,® 表示注册商标符号“®”)。不幸的是,许多 html 用户代理都默默地忽略了 html 文档中 & 符号的错误用法 - 将看起来不像实体引用的 & 符号视为文字 & 符号。基于 xml 的用户代理不会容忍这种不正确的使用,并且任何错误使用 & 符号的文档都将不是“有效的”,因此将不符合此规范。为了确保文档与历史 html 用户代理和基于 xml 的用户代理兼容,文档中使用的被视为文字字符的 & 符号必须将其自身表示为实体引用(例如“&”)。 例如,a元素的href属性引用带参数的cgi脚本时,必须表示为Http://my.site.dom/cgi-bin/myscript.pl?class=guest& name=user 而不是 http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user

在这种情况下,go 实际上使您的 html 更好、更有效

话虽这么说 - 浏览器将对其进行转义,因此如果单击它,生成的 url 仍然是正确的(没有 &,只有 &

console.log(document.queryselector('a').href)
 WTF

以上就是Golang html.Parse重写href查询字符串以包含&的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Golang html.Parse重写href查询字符串以包含&

本文链接: https://lsjlt.com/news/562915.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作