Этот код использует функцию fgetcsv
для анализа одной строки за раз из файла CSV, помещения каждого разделенного поля в массив и возврата этого массива.В вашем примере csv возвращаемый массив будет содержать только два поля.
Далее, после проверки, чтобы убедиться, что возвращаемое значение из fgetcsv
не false
или null
, код проверяется напосмотрите, содержит ли первое поле массива любые не шестнадцатеричные символы в диапазоне [GZ], используя preg_match
.Если этого не произойдет, то он поместит два поля массива (представляющих строку из вашего CSV-файла) в новый массив, с которым вы сможете работать позже.
<?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
, поскольку он объектно-ориентирован и, возможно, немного проще в использовании, чем указанные выше функции..