Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除Javascript数组中的反斜杠转义_Javascript_Php_Arrays_Backslash - Fatal编程技术网

删除Javascript数组中的反斜杠转义

删除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个位置是空的 我已经尝试用循环替换来修复它,但我不知道如何添加\“作为搜索

我有一个相当复杂的问题

我使用PHP将CSV文件解析为数组,然后

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("\\", "&#92;", $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("\\", "&#92;", $line);
    // ...
}