我有一个字符串
string(22) ""words,one","words2""
需要爆炸到具有结构的数组
array( [0] => words,one ,[1] => words2)
答案 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);
如果不是拼写错误,您可以使用:
Preg_match_all("/\"+(.*?)\"+/", $str, $m);
在这里,我为每个+
添加"
,这意味着"可以有多个"
答案 2 :(得分:0)
使用preg_split,您可以尝试:
$str = '"words,one","words2"';
$matches = preg_split("/\",\"/", trim($str, '"'));
print_r($matches);
答案 3 :(得分:0)
假设输入字符串可以按如下方式细分:
我们可以提取fgetcsv
可以解析的csv格式化字符串。
修剪原件并将其包裹在流中允许我们使用fgetcsv
。 See 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);
此方法还支持其他类似格式的字符串: