在 javascript 中字符串变量的 “'” 之前添加 ' '


Add ' ' before " ' " of a string variable in javascript

我有一个javascript变量,它保存从其他地方获取的值(假设来自API调用),取字符串在下面给出,

He's the reason for this

我将这个字符串分配给变量名称"sample"。但是当我打印它时,它不起作用,因为字符串有"'"字符。我想在"'"字符之前添加"''"。我尝试使用它,

var sample = (get the string from a api call).replace(/'/g,"''''");

但是它不起作用?

在我的javascript文件中,我使用window.location.href = "test.php?detail="+sample;来发送数据。

使用 encodeURIComponent 转义字符串以插入到 URI 中。

在我的测试.php中,我使用$detail = $_GET["detail"];echo $detail;来打印它。

如果要将其打印到 HTML 中,请使用 htmlspecialchars 以确保其安全。

如果要将其打印到 JavaScript 中,请使用 json_encode 使其安全。

你过度使用转义字符:

var sample = (get the string from a api call).replace(/'/g,"'''");
就足够了,单引号,由

双引号分隔,不需要转义,所以只需转义一个反斜杠。
不过,旁注:如果您正在检查的字符串是返回值,则单引号应该不是问题(如果是,则 api 代码将在返回字符串之前中断)。如果你真的真的真的想成为超超级确定并且字符串很长:

var sample = (get the string from a api call).split('''').join('''''');
//or (to avoid confusion with all that escaping
var sample = (get the string from a api call).split("'").join("'''");

对于较长的字符串,拆分速度更快(不是短字符串,因为数组构造函数被称为数组构造函数,创建一个数组对象,循环,...)

大概问题出在(get the string from a api call) 上。如果你有一些像这样的服务器端代码(PHP?):

var sample = <?php echo $mystring ?>.replace(…);

。它产生发送到浏览器的输出,如下所示:

var sample = 'my dad's car'.replace(…);

。那么你的服务器端代码产生了语法无效的JavaScript,无法通过更多的JavaScript修复。相反,您需要在服务器上修复它,例如:

var sample = <?php echo json_encode($mystring); ?>;

但是,如果没有实际的代码详细信息,就不可能进一步帮助您。