2017-07-03 97 views
0

我想分割一个TSV字符串。其结构是:preg_split:包括空字段

abc\tdef\tghi\tjklm 

其中\ t是制表符。

如果我使用使preg_split拆分这样字符串$ I

$field=preg_split("/\t/", $i); 

$字段[3]是JKLM。

但是,如果我有另一个字符串

abc\tdef\t\t 

$场[3]不是有效的索引。

我怎样才能强制空字段到$字段,这样所有的$字段数组将有相同数量的索引?

+3

这应该是正常的行为。你的例子给了我一个4个元素的数组,其中2和3是空字符串。根据doc http://php.net/manual/de/function.preg-split.php,有一个标志叫做PREG_SPLIT_NO_EMPTY,如果你想返回空的元素,就不能设置它。 – user1915746

+1

为什么即使使用preg split?这不是一个正则表达式问题'\ t'是静态的,所以为什么要使用正则表达式呢? – Andreas

回答

0

如果你只是为了提取标签分隔符值数据的问题,你可以使用内置的PHP函数(fgetcsv()) 。它比使用我们自己的功能更稳定。请尝试这个

if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    // extract csv using tab delimiter 
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) { 
     print_r($data); 
    } 
    fclose($handle); 
}