首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何转义可能包含引号的内容?

如何转义可能包含引号的内容?
EN

Stack Overflow用户
提问于 2008-12-18 19:06:35
回答 3查看 881关注 0票数 0

我想捕获我的搜索词并将它们传递给一个JavaScript变量,但是我不知道如何处理可能出现的引号。

以下是我目前的情况:

代码语言:javascript
运行
复制
var searchTerms = "<!--#echo var="terms"-->";
var pattern = / /g;
newSearchTerms = searchTerms.replace(/[^a-zA-Z 0-9]+/g,'');
var searchStr=newSearchTerms.replace(pattern,"_");

我担心“术语”应该包含双引号(或者如果我在JS中使用单引号),那么我的函数就会失败。

如何在字符串进入脚本之前将其转义?

谢谢,

史蒂夫

编辑/回答:最后,我将它移动到一个捕获并解析查询字符串的外部脚本中,而不是在HTML中回显它。

EN

回答 3

Stack Overflow用户

发布于 2008-12-18 19:13:47

如果terms包含引号,那么当您完成var searchTerms = "<!--#echo var="terms"-->";操作时,替换任何引号已经太晚了,您的JavaScript将无效。例如,如果terms包含--这些是您的JavaScript将显示的“术语”(并在浏览器中产生语法错误):

代码语言:javascript
运行
复制
var searchTerms = "These are the "terms"";

如果您确信terms只包含双引号,则可以:

var searchTerms = '<!--#echo var="terms"-->';

如果可以同时包含单引号和双引号,则需要使用比<!--#echo var="..."-->更复杂的服务器端技术对服务器上的输出进行净化。

票数 3
EN

Stack Overflow用户

发布于 2008-12-18 19:36:11

从您的代码来看,您似乎在使用Apache包含的内容。echo SSI有一个名为encoding的属性,它允许您指定url样式的编码。您可以用这种方式对引号进行编码,只需使用unescape()在Javascript中取消编码即可。

试试这个:

代码语言:javascript
运行
复制
var terms = "<!--#echo encoding="url" var="terms"-->";
terms = unescape(terms)
票数 2
EN

Stack Overflow用户

发布于 2008-12-18 19:19:26

我会为搜索文本框的onchange事件添加一个javascript。捕获击键,忽略可能输入的引号和任何其他特殊字符。如果输入来自服务器端,则在将其发送到脚本之前对其进行清理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/378848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档