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怎么在浏览器运行