在php中将字符串分解为数组

在php中将字符串分解为数组,php,Php,我有一根绳子 string(22) ""words,one","words2"" 需要分解成一个具有结构的数组 array( [0] => words,one ,[1] => words2) 我假设您的“是”\“或”的打字错误 我使用正则表达式捕获“和(.*?的内部内容,?表示懒惰。 我用\“对”进行转义,使其读取文本。 你的话将以百万美元[1]为单位 $str = '"words,one","words2"'; Preg_match_all("/\"(.*?)\"/", $s

我有一根绳子

string(22) ""words,one","words2""
需要分解成一个具有结构的数组

array( [0] => words,one ,[1] => words2)
我假设您的
”\“
的打字错误
我使用正则表达式捕获
(.*?
的内部内容,
表示懒惰。
我用
\“
进行转义,使其读取文本。
你的话将以百万美元[1]为单位

$str = '"words,one","words2"';

Preg_match_all("/\"(.*?)\"/", $str, $m);

Var_dump($m);

如果不是打字错误,您可以使用:

Preg_match_all("/\"+(.*?)\"+/", $str, $m);
在这里,我在每个
中添加了一个
+
,这意味着“可以有多个”

我假设您的
”或
的打字错误
我使用正则表达式捕获
(.*?
的内部内容,
表示懒惰。
我用
\“
进行转义,使其读取文本。
你的话将以百万美元[1]为单位

$str = '"words,one","words2"';

Preg_match_all("/\"(.*?)\"/", $str, $m);

Var_dump($m);

如果不是打字错误,您可以使用:

Preg_match_all("/\"+(.*?)\"+/", $str, $m);

在这里,我向每个
添加了一个
+
,这意味着“可以有多个”

要继续使用您提到的
分解
选项,请尝试以下操作:

$str = '"words,one","words2"';
$arr = explode('","', trim($str, '"'));

print_r($arr);
请注意,
trim
删除起始引号和结束引号,而
explode
使用内部引号作为分隔符的一部分

输出

Array
(
    [0] => words,one
    [1] => words2
)

要继续使用您提到的“尝试”的“分解”
选项,您可以尝试以下操作:

$str = '"words,one","words2"';
$arr = explode('","', trim($str, '"'));

print_r($arr);
请注意,
trim
删除起始引号和结束引号,而
explode
使用内部引号作为分隔符的一部分

输出

Array
(
    [0] => words,one
    [1] => words2
)
使用以下命令,您可以尝试:

$str = '"words,one","words2"';
$matches = preg_split("/\",\"/", trim($str, '"'));

print_r($matches);
检查:

使用您可以尝试:

$str = '"words,one","words2"';
$matches = preg_split("/\",\"/", trim($str, '"'));

print_r($matches);

检查:

假设输入字符串可以按如下方式分解:

  • 周围的双引号始终存在,并由每个双引号组成
  • “words,one”,“words2”在删除周围的双引号后保留
我们可以提取一个csv格式的字符串,
fgetcsv
可以解析它


修剪原稿并将其包装在流中允许我们使用
fgetcsv


此方法还支持其他类似格式的字符串:


假设输入字符串可以按如下方式分解:

  • 周围的双引号始终存在,并由每个双引号组成
  • “words,one”,“words2”在删除周围的双引号后保留
我们可以提取一个csv格式的字符串,
fgetcsv
可以解析它


修剪原稿并将其包装在流中允许我们使用
fgetcsv


此方法还支持其他类似格式的字符串:


你试过什么?@andreas我试过explode函数,即explode(“,”,$string);但是结果是数组(3){[0]=>string(6)”“单词”[1]=>string(4)“一”[2]=>string(10)”“单词2”}对我来说足够好了。这样试试吧:你认为这会有两个以上的组吗?另外,输入字符串是否总是在整件事情的周围有一对额外的引号。你试过什么?@andreas我试过explode函数,即explode(“,”,$string);但是结果是数组(3){[0]=>string(6)”“单词”[1]=>string(4)“一”[2]=>string(10)”“单词2”}对我来说足够好了。这样试试吧:你认为这会有两个以上的组吗?另外,输入字符串在整个字符串周围总是有一对额外的引号。我需要的结果是数组(3){[0]=>string(9)”“words,一个“[1]=>string(10)”“words2”“}比原始字符串中的
更多。这真的正确吗?我需要数组(3){[0]=>string(9)”“words,一个”[1]=>string(10)”“words2”“}的结果。与原始字符串相比,有更多的
。这是真的吗?