我想分割一个TSV字符串。其结构是:preg_split:包括空字段
abc\tdef\tghi\tjklm
其中\ t是制表符。
如果我使用使preg_split拆分这样字符串$ I
$field=preg_split("/\t/", $i);
$字段[3]是JKLM。
但是,如果我有另一个字符串
abc\tdef\t\t
$场[3]不是有效的索引。
我怎样才能强制空字段到$字段,这样所有的$字段数组将有相同数量的索引?
我想分割一个TSV字符串。其结构是:preg_split:包括空字段
abc\tdef\tghi\tjklm
其中\ t是制表符。
如果我使用使preg_split拆分这样字符串$ I
$field=preg_split("/\t/", $i);
$字段[3]是JKLM。
但是,如果我有另一个字符串
abc\tdef\t\t
$场[3]不是有效的索引。
我怎样才能强制空字段到$字段,这样所有的$字段数组将有相同数量的索引?
如果你只是为了提取标签分隔符值数据的问题,你可以使用内置的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);
}
这应该是正常的行为。你的例子给了我一个4个元素的数组,其中2和3是空字符串。根据doc http://php.net/manual/de/function.preg-split.php,有一个标志叫做PREG_SPLIT_NO_EMPTY,如果你想返回空的元素,就不能设置它。 – user1915746
为什么即使使用preg split?这不是一个正则表达式问题'\ t'是静态的,所以为什么要使用正则表达式呢? – Andreas