【问题标题】:How to auto convert an & search query to %26如何将 & 搜索查询自动转换为 %26
【发布时间】:2019-11-25 22:43:42
【问题描述】:

我构建了一个简单的表单,将用户创建的输入查询发送到https://www.google.com/search?q=

一切都很好,除了用户在搜索中输入 & 时。因此,例如,如果用户在搜索表单中输入的是 Anderson, Johnson, & Smith Associates,则查询会在 Anderson, Johnson 之后中断,因为 Google 无法识别 &

是否可以将脚本或其他内容添加到“提交”按钮,以便如果用户查询包含 &,它会自动将其转换为 %26。因此,例如,如果用户在表单中输入Anderson, Johnson, & Smith Associates,则发送给 Google 的相应查询是:https://www.google.com/search?q=Anderson,%20Johnson,%20%26%20Smith%20Associates

【问题讨论】:

  • 您使用什么语言构建 URL? JavaScript? C#? Python?每种语言都有自己的实用功能,但您要寻找的基本上是在字符串中转义 HTML 实体。例如,对于 JS,有 encodeURI()encodeURIComponent()
  • 简单的javascript。基本上,按钮具有以下属性: var custom_query = button.getAttribute("data-query") 后跟与每个输入字段关联的 var。使用 a: f ( tname_value.length > 0 ){ query_string += 拉取与输入字段对应的关联 VAR。脚本以 query_string += custom_query 结尾; window.open(query_string); }

标签: search google-search


【解决方案1】:

您可以在将字符串添加到 URL 之前使用 encodeURIComponent() 解析字符串,即:

var url = 'https://www.google.com/search?q=' + encodeURIComponent(<YourStringHere>);

这是一个概念验证示例:

document.querySelector('#button').addEventListener('click', function() {
  var query = document.querySelector('#query').value;
  var url = 'https://www.google.com/search?q=' + encodeURIComponent(query);

  console.log(url);
  const link = document.querySelector('#link');
  link.href = url;
  link.innerHTML = url;
});
a {
  display: block;
}
<input type="text" id="query" value="Anderson, Johnson, & Smith Associates" />
<button type="button" id="button">Search on Google</button>

<a href="#" id="link"  target="_blank"></a>

【讨论】:

  • 谢谢你,特里。不幸的是,因为我将布尔逻辑自动添加到查询中,所以这不起作用。在您的示例中, 查询在每次搜索时都会有所不同。因此,例如,搜索一个可能是“acme Corporation”。搜索二可能是“Anderson, Johnson, & Smith Associates”。所以查询本身需要独立。所以,另一种表达问题的方法:在脚本的某个地方,我需要一个 IF/THEN 元素。含义如果 包含 &,则将 & 转换为 %26。这可能吗?
  • @sandyscott 我不明白你的评论。布尔逻辑与此有什么关系?您只是对非法字符进行编码/转义,以便它们不会被解析为查询字符串保留字符。 encodeURIComponent 自己进行编码,您无需检查它是否包含 &amp; 或不替换字符。
猜你喜欢
  • 1970-01-01
  • 2018-09-23
  • 2020-01-10
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 2012-02-28
相关资源
最近更新 更多