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

时间:2018-01-31 04:26:54

标签: php

我有一个字符串

string(22) ""words,one","words2""

需要爆炸到具有结构的数组

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

4 个答案:

答案 0 :(得分:4)

要继续您提到的explode选项,您可以尝试以下操作:

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

print_r($arr);

注意trim删除开头和结尾引号,而explode使用内部引号作为分隔符的一部分。

输出

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

答案 1 :(得分:1)

我认为您的"""\"'"的拼写错误 我使用正则表达式捕获"内的(.*?)内部?意味着懒惰的内容。
我使用"转义\"以使其按字面读取。
你会用$ m [1]来表达你的话。

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

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

Var_dump($m);

https://3v4l.org/G4m4f

如果不是拼写错误,您可以使用:

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

在这里,我为每个+添加",这意味着"可以有多个"

答案 2 :(得分:0)

使用preg_split,您可以尝试:

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

print_r($matches);

检查:https://eval.in/945572

答案 3 :(得分:0)

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

  • 周围的双引号始终存在,每个双引号组成。
  • 删除周围的双引号后留下“words,one”,“words2”。

我们可以提取fgetcsv可以解析的csv格式化字符串。

修剪原件并将其包裹在流中允许我们使用fgetcsvSee sample code on eval.in

$fullString= '""words,one","words2""';
$innerString = substr($fullString, 1, -1)
$tempFileHandle = fopen("php://memory", 'r+');
fputs($tempFileHandle , $innerString);
rewind($tempFileHandle);
$explodedString = fgetcsv($tempFileHandle, 0, ',', '"'); 
fclose($tempFileHandle);

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