在PHP中处理以制表符分隔的文件中的双制表符

在PHP中处理以制表符分隔的文件中的双制表符,php,regex,csv,tabs,Php,Regex,Csv,Tabs,上面的代码片段可以拆分一个以制表符分隔的文件,其中制表符不在双引号内。除了有两个选项卡(缺少字段)的情况外,它工作正常。基本上,当有两个选项卡时,PHP只看到一个选项卡。是否有选项卡宽度选项?这些\s也将匹配选项卡,而您显然不希望这样 $lineArray = preg_split('/\t\s*(?=([^"]*"[^"]*")*[^"]*$)/', $line); 应该通过只匹配非制表符空格来解决此问题。这些\s也将匹配制表符,而您显然不希望这样 $lineArray = preg_spl

上面的代码片段可以拆分一个以制表符分隔的文件,其中制表符不在双引号内。除了有两个选项卡(缺少字段)的情况外,它工作正常。基本上,当有两个选项卡时,PHP只看到一个选项卡。是否有选项卡宽度选项?

这些\s也将匹配选项卡,而您显然不希望这样

$lineArray = preg_split('/\t\s*(?=([^"]*"[^"]*")*[^"]*$)/', $line);

应该通过只匹配非制表符空格来解决此问题。

这些\s也将匹配制表符,而您显然不希望这样

$lineArray = preg_split('/\t\s*(?=([^"]*"[^"]*")*[^"]*$)/', $line);

应该通过只匹配非制表符空格来解决此问题。

是否有任何原因可以解释为什么您是正则表达式而不是a?为什么在其中有\s*?它将包括标签。。。您不能使用
str_getcsv
/
fgetcsv
的原因是什么?它实际上不是一个完全限定的csv,逻辑包含了更多内容,但我将其缩小到了无法正确拆分的范围。您为什么使用正则表达式而不是一个?为什么在其中有\s*?它将包括标签。。。您不能使用
str_getcsv
/
fgetcsv
的原因是什么?它实际上不是一个完全限定的csv,逻辑包含更多内容,但我将其缩小到了无法正确拆分的范围。