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

2024年 2月 10日 121.2k 0

golang html.parse重写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查询字符串以包含&的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

智能AI问答
每日运维网(www.mryunwei.com)智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。

我要提问

相关标签:

php golang html xml 字符串 CGI class dom href tr http https

来源:stackoverflow网


收藏


点赞

上一篇:C# 任务 async/await 与 Golang 的 goroutine

下一篇:反序列化/解析错误 KafkaProtobuf Python


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

作者最新文章

  • 知乎怎么开启筛选评论 开启方法介绍

    2024-02-09 23:09:52

  • OPPO A2怎么解锁?

    2024-02-09 23:03:16

  • CentOS下安装LAPACK和Paramiko详细教程

    2024-02-09 23:00:09

  • 荣耀90GT如何应用分身?

    2024-02-09 22:57:07

  • 微信视频号如何认证?

    2024-02-09 22:51:08

  • 如何在 VScode 中为 Fontawesmome 库添加 vmArgs

    2024-02-09 22:50:24

  • Go 是否提供了标准或事实上的方法来处理单个语句中的错误(即内联错误处理)?

    2024-02-09 22:50:10

  • iMindMap怎么导出PPT格式 保存方法教程

    2024-02-09 22:48:07

  • 苹果mac快捷键在哪设置(苹果mac快捷键怎么设置)

    2024-02-09 22:40:28

  • win10能找到共享打印机但连不上怎么解决?

    2024-02-09 22:39:08

最新问题

PHP函数输出结果显示为Array,而非预期的值
我有一个php脚本,我需要将日期格式从CYYMMDD更新为MM/DD/YYYY,我写了一个函数来帮我做这个,但是当我打印它时,结果显示为'Array'。//将日期格式从CYYMMD...

P粉722409996来自于2024-02-04 11:38:12

0
1
373

为什么我无法将 const 变量传输到不同的 React 文件
所以我试图将const变量从一个文件传输到另一个文件。由于某种原因,我无法访问它,并且它不允许我在文本文件中显示它。下面分别是homepage.js代码和pay.js文件。我正在尝...

P粉593118425来自于2024-02-04 11:46:16

0
1
293

MySQL:无法更新存储函数/触发器中的表“订单”,因为它已被调用此存储函数/触发器的语句使用
我在MySQL数据库中有一个名为orders的表。在我们收到资金之前,payment_date属性为Null,此时它会更新为日期。一旦更新了payment_date属性,order...

P粉282627613来自于2024-02-04 11:46:04

0
1
248

寻求 MySQL 查询帮助 - 计算分组范围内的时间戳计数
有人会认为这很简单,但一整晚都在拼命努力。我有一个传感器警报日志,想要生成一个表格,其中包含每个不同传感器24小时、168小时(1周)和336小时(2周)内的事件的简单计数。我对M...

P粉026665919来自于2024-02-04 11:20:54

0
1
313

当用户提交图像时,是否可以动态更新图像“图库”?
我正在创建一个网站,展示我祖父的所有照片。由于我没有所有照片,而且还会有其他人来来去去,我认为有一个网站让他们可以提交照片然后查看它们的“数据库”会很不错。目前,我有一个Infin...

P粉715228019来自于2024-02-04 11:28:23

0
1
261

Buttons 标签对于 Jquery Attr 的工作至关重要
atrr函数没有给出所需的响应,我有一个小代码,可以从外部API中获取数据,该API在dict中有几个数据。


  • php文件怎么打开

  • php怎么取出数组的前几个元素

  • php反序列化失败怎么办

  • php怎么连接mssql数据库

  • php连接mssql数据库的方法

  • html怎么上传

  • PHP出现乱码怎么解决

  • php怎么在浏览器运行

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论