我想创建指向网站上页面的超链接,但页面地址中有双引号?
例如:
<a href="mysite.com/search.php?q="sales+manager"&l=usa"></a>
上面只是链接到mysite.com/search.php?q=正如我所期望的那样。
API返回的结果允许通过将结果放在双引号中进行短语搜索。
有没有办法在href标记中转义这些?
简单的解决方案:使用替代引号:
<a href='mysite.com/search.php?q="sales+manager"&l=usa'></a>
这会很好用(浏览器会确保用户点击URL时URL的格式正确),但你真的应该对特殊字符进行URL编码,因为URL中有很多东西是不允许使用的,有些东西有不同的含义(例如,在URL中,空格变成了+,所以你不能在解析后插入+并使其保持不变。URL魔术!)。
看看urlencode,并在生成链接URL服务器端时使用它。这将把空格变成%20
,把双引号变成%22
等等,这就是将文本字符串数据从客户端发送到服务器的方式。
Yo必须对引号进行编码&报价
mysite.com/search.php?q="sales+manager"&l=usa
有没有办法在href标记中转义这些?
是的,有逃生角色。'
。
尽管如此,您的代码的当前状态将产生:
<a href="example.com/search.php?q="sales+manager"&l=usa"></a>
有效地中断href,因为您正在中断字符串。
你想要的只是:
<a href="mysite.com/search.php?q=sales+manager&l=usa">...</a>
您正在考虑是否需要转义字符才能在HTML中工作。但是,您还应该考虑是否需要对它们进行转义才能成为健全的URL。
要在HTML中工作,您可以执行<a href="mysite.com/search.php?q='sales+manager'&l=usa">
但是,'
字符不能在URL中。
"统一资源定位器只能包含标准ASCII字符集中的可显示字符。不可显示的字符或扩展ASCII集(128到255)中的字符是经过特殊编码的。"有关URL转义码的列表,请参见此处。
也许您希望在URL的get请求中保留引号。在这种情况下,您可能需要:
<a href="mysite.com/search.php?q=%22sales+经理%22&l=usa">