我有一个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); ?>;
但是,如果没有实际的代码详细信息,就不可能进一步帮助您。