我正在创建一个函数,它读取制表符分隔的文本文件,然后将值存储在二维数组中。文本文件有一行数据,然后一行只有制表符(因为它是从 excel 导出的),我选择使用制表符而不是逗号,因为某些值中有逗号。
我打开文件进行阅读,然后使用
$lines = file($filename);
将文件的每一行作为一个元素放入数组中。
然后我使用这个 foreach 循环,如果它是所有选项卡的一行,我想取消它,如果它有数据,我想将它分解(以创建二维数组)。
这是我当前的代码:
//loop through array to either explode into two dimentional array or to unset lines with only tabs(no letters)
foreach($lines as $index => $line)
{
//work around so that it removes any lines with 2 tabs at the begining of the line, we know this because MRN and Patient Name is always included
if (preg_match("/^\t{2}/", $line))
{
unset($lines[$index]);
echo " unset";
}
else
{
$lines[$index] = explode("\t",$line);
echo " explode";
}
}
//use array_values() so that indexes are in standard form in array
$lines = array_values($lines);
echo "<pre>START";
print_r($lines);
echo "END</pre>";
这是输入:
Pam Administrator 2 gold
Charlotte Office Organizer 3 purple
这是输出:
unset explode unset explode explode
STARTArray
(
[0] => Array
(
[0] => Pam
[1] => Administrator
[2] => 2
[3] => gold
)
[1] => Array
(
[0] => Charlotte
[1] => Office Organizer
[2] => 3
[3] => purple
)
[2] => Array
(
[0] =>
)
)
END
我的问题是 preg_match 如果我这样做了:
(preg_match("/^\t{2}/", $line))
但如果我这样做不起作用:
$tabcount=2;
(preg_match("/^\t{$tabcount}/", $line))
它只是查看它并返回 false 并且不会取消设置该行。
为什么这样做?
先感谢您。