Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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 如果已经包含逗号,如何拆分js字符串?_Javascript_Php_Regex - Fatal编程技术网

Javascript 如果已经包含逗号,如何拆分js字符串?

Javascript 如果已经包含逗号,如何拆分js字符串?,javascript,php,regex,Javascript,Php,Regex,我在js文件中用逗号分割值时遇到问题。在index.php文件中,我从数据库中获取名称,并使用json_encode()返回如下数据 <?php $sql = "select id,name from my_table where id='$id'"; $query = mysql_db_query($dbname,$sql); while($row = mysql_fetch_array($query)){ $id = $row['id'];

我在js文件中用逗号分割值时遇到问题。在index.php文件中,我从数据库中获取名称,并使用json_encode()返回如下数据

<?php
$sql = "select id,name from my_table where id='$id'";
    $query = mysql_db_query($dbname,$sql);
    while($row = mysql_fetch_array($query)){
        $id = $row['id'];
        $name = $row['name'];
        $arr['id'][] = $id;
        $arr['name'][] = '"'$ans.'"';
    }
echo json_encode($arr);
?>
如果响应数据没有像这样的逗号,那么这个js是有效的

"name one","name two","name three","name four"
但我遇到了一个问题,如果响应数据有逗号(
“name one”、“name two、five”、“name three、six”、“name four”
),它将拆分为

“命名一”、“命名二”、“命名五”、“命名三”、“命名六”、“命名四”

这是我的问题。我想把它改成这样

"name one","name two","name three","name four"
“命名一”
“命名二,五”
“命名三,六”
“命名四”

我还想从所有字符串中删除双引号


我已经花了很多时间来解决这个问题。但是不起作用。非常感谢您的帮助。

您可以添加方括号,并利用JSON解析器来完成以下操作:

var s = '"name one", "name two , five" , "name three , six" , "name four"';

var arr = JSON.parse('[' + s + ']');

console.log(arr[0]); // name one
console.log(arr[2]); // name three , six

获取正确格式响应的正确方法是从服务器以相同格式发送响应

尝试更改
$arr['name'][='“$ans.”
$arr['name'][]=$ans
这样,所有字符串都将添加到数组中,而不需要额外的引号,并且在响应为get时在客户端使用
JSON.parse(response)
从字符串表示中获取JSON对象


如果无法更改响应格式(第三方API或任何其他原因),则可以使用JavaScript字符串方法

您可以使用删除额外的引号,并使用不在引号内的逗号拆分字符串

  • str.substring(1,str.length-1)
    :从字符串中删除第一个和最后一个字符,从而删除第一个和最后一个引号
  • .split(/“\s*,\s*”/)
    :将字符串拆分为
    ,后跟任意数量的空格,然后是
    ,然后是任意数量的空格,然后是引号。拆分为
    ,“
    ,在
    之间有任意数量的空格
  • var str=''name one'、'name two,five'、'name three,six'、'name four';
    var arr=str.substring(1,str.length-1).split(/“\s*,\s*”/);
    控制台日志(arr);
    
    编写(“”+JSON.stringify(arr,0,4)+“”)服务器的确切响应是什么?通过更改
    $arr['name'][]='“$ans.”检查是否正确==>
    $arr['name'][]=$ans
    删除额外的引号,然后您可以使用
    JSON.parse()
    从StringObject获取对象非常感谢。现在,它起作用了。你能解释一下这段代码吗?因为我是web开发的新手。@上面的几点解释了这段代码,
    substring
    删除第一个和最后一个引号,
    split
    拆分字符串,“
    ”。