我有一根绳子
string(22) ""words,one","words2""
并且需要分解为具有结构的数组
array( [0] => words,one ,[1] => words2)
要继续您提到尝试的
explode
选项,您可以尝试以下操作:
$str = '"words,one","words2"';
$arr = explode('","', trim($str, '"'));
print_r($arr);
请注意
trim
删除开始和结束引号,而 explode
使用内部引号作为分隔符的一部分。
输出
Array
(
[0] => words,one
[1] => words2
)
我认为您的
""
是 "\"
或 '"
的拼写错误。"
和 (.*?)
的内部内容,其中 ?
意味着懒惰。"
转义 \"
,使其按字面意思读取。$str = '"words,one","words2"';
Preg_match_all("/\"(.*?)\"/", $str, $m);
Var_dump($m);
如果这不是拼写错误,您可以使用:
Preg_match_all("/\"+(.*?)\"+/", $str, $m);
这里我给每个
+
添加了一个"
,意思是“可以有多个”
使用 preg_split 你可以尝试:
$str = '"words,one","words2"';
$matches = preg_split("/\",\"/", trim($str, '"'));
print_r($matches);
假设输入字符串可以分解如下:
我们可以提取
fgetcsv
可以解析的 csv 格式的字符串。
修剪原始内容并将其包装在流中允许我们使用
fgetcsv
。 请参阅 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);
此方法还支持其他类似格式的字符串: