此代码使用该fgetcsv
函数从 csv 文件中一次解析出一行,将每个分隔字段放入一个数组中,然后返回该数组。使用您的示例 csv,返回的数组将仅包含两个字段。
接下来,在检查以确保 isnot或的返回值之后,代码使用 . 检查数组的第一个字段fgetcsv
是否包含 [GZ] 范围内的任何非十六进制字符。如果没有,那么它会将数组的两个字段(代表 csv 文件中的一行)放入一个新数组中,您可以稍后对其进行操作。false
null
preg_match
<?php
$fileName = "test.csv";
$hexLines = array();
if (($file = fopen($fileName, "r")) !== false)
{
while (($line = fgetcsv($file, 0, ",")) !== false)
{
if (!empty($line))
{
// IF first field only has hex chars
if (preg_match('/^[0-9A-F]+$/', $line[0]) === 1)
{
$hexLines[] = array($line[0], $line[1]);
}
}
}
fclose($file);
}
print_r($hexLines);
顺便说一句,上面的代码在 PHP 5.2.x 和 5.3.x 版本中都可以工作。如果您 100% 确定您将使用 5.3,我会使用SplFileObject
它来编写代码,因为它是面向对象的,并且可能比上述函数更易于使用。