删除Javascript数组中的反斜杠转义
我有一个相当复杂的问题 我使用PHP将CSV文件解析为数组,然后删除Javascript数组中的反斜杠转义,javascript,php,arrays,backslash,Javascript,Php,Arrays,Backslash,我有一个相当复杂的问题 我使用PHP将CSV文件解析为数组,然后 var array = <?php echo json_encode( $array ) ?>; 现在,当用户名的结构如下时,有时用户名中的反斜杠转义似乎有问题: [“username\”、“sth”、“sth”、…],因此当用户名以反斜杠结尾时 输出将是: username", sth, sth, ... 但这只是子数组的第一个元素,其他8个位置是空的 我已经尝试用循环替换来修复它,但我不知道如何添加\“作为搜索
var array = <?php echo json_encode( $array ) ?>;
现在,当用户名的结构如下时,有时用户名中的反斜杠转义似乎有问题:
[“username\”、“sth”、“sth”、…],因此当用户名以反斜杠结尾时
输出将是:
username", sth, sth, ...
但这只是子数组的第一个元素,其他8个位置是空的
我已经尝试用循环替换来修复它,但我不知道如何添加\“作为搜索值。这在JS中是不可能的,因为\”总是转义吗?已尝试charAt()将最后一个字符与反斜杠进行比较,但未成功。在PHP中将其传递给JS之前,是否必须替换它?
如果重要的话,解析函数如下所示:
<?php>
$url = "data.csv";
$csvData = file_get_contents($url);
$lines = explode(PHP_EOL, $csvData);
$array = array();
foreach ($lines as $line) {
$array[] = str_getcsv($line);
?>
这里有一个可以使用的JSFIDLE:您只需要用html特殊字符替换反斜杠:
foreach ($lines as $line) {
$line = str_replace("\\", "\", $line);
// ...
}
这有点棘手,因为必须将javascript解析为对象/数组。无论何时,反斜杠都会被解析出来。为了避免这样做,您需要将值存储在HTML页面中,或者使用来获取字符串的文本版本 实现它的一种方法是将字符串放入html中,并获取隐藏文本区域的值。(你可以把它存放在任何地方,我只是选择了textarea)。然后将其传递给这个javascript函数
slashParse
,该函数将用~{}~
替换所有斜杠,然后运行javascript解析算法,然后将~{}~
替换回反斜杠
函数slashParse(目标){
var值=document.getElementById(target).value;
var replacedVal=value.replace(/\\/g,“~{}~”);
var parsedVal=JSON.parse(replacedVal);
var mappedVal=parsedVal.map(函数(项){
返回项。替换(/~{}~/g,“\\”);
});
返回mappedVal;
}
var parsed=slashParse('input');
console.log(已解析)
document.getElementById(“test”).innerText=已解析代码>
[“使用\rna/textareatextaream\\”、“2”、“3”、“4”]
foreach ($lines as $line) {
$line = str_replace("\\", "\", $line);
// ...
}