首页 > 后端开发 > Golang > 正文

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

王林
发布: 2024-02-09 23:42:08
转载
1274人浏览过

golang html.parse重写href查询字符串以包含&

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

问题内容

我有以下代码:

package main

import (
    "os"
    "strings"

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

func main() {
    myhtmldocument := `<!doctype html>
<html>
<head>
</head>
<body>
    <a href=&amp;amp;amp;quot;http://www.example.com/input?foo=bar&amp;amp;amp;amp;baz=quux&amp;amp;amp;quot;>wtf</a>
</body>
</html>`

    doc, _ := html.parse(strings.newreader(myhtmldocument))
    html.render(os.stdout, doc)
}
登录后复制

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

<!DOCTYPE html><html><head>

</head>
<body>
    <a href=&amp;amp;amp;quot;http://www.example.com/input?foo=bar&amp;amp;amp;amp;baz=quux&amp;amp;amp;quot;>WTF</a>

</body></html>
登录后复制

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

立即学习go语言免费学习笔记(深入)”;

有办法避免这种行为吗?

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

燕雀Logo
燕雀Logo

为用户提供LOGO免费设计在线生成服务

燕雀Logo 101
查看详情 燕雀Logo

解决方法

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

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

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

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

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

console.log(document.queryselector('a').href)
登录后复制
 <a href=&amp;amp;amp;quot;http://www.example.com/input?foo=bar&amp;amp;amp;amp;baz=quux&amp;amp;amp;quot;>WTF</a>
登录后复制

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

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号