を使用Iteratorsして、CSVコンテンツの取得とフィルタリングを同時に行うことができます。各CSVインデックスに異なるコールバックを追加することもできます
例 
$csv = new CSVFilter(new CSVIterator("log.txt"));
$csv->addFilter(0, "validateName"); //<------------ Means validate Index at 0
$csv->addFilter(1, "validateEmail");
$csv->addFilter(2, "validateAddr");
$csv->addFilter(3, "validateBirtd");
$csv->addFilter(4, "validateName");
$csv->addFilter(5, "validateUsername");
foreach ( $csv as $data ) {
    var_dump($data);
}
//To get Errors 
var_dump($csv->getErrors());
CSVフィルター 
class CSVFilter extends FilterIterator {
    protected $filter = array();
    protected $errors = array();
    public function __construct(Iterator $iterator) {
        parent::__construct($iterator);
    }
    public function addFilter($index, Callable $callable) {
        $this->filter[$index] = $callable;
        $this->errors[$callable] = 0;
    }
    public function getErrors() {
        return $this->errors;
    }
    public function accept() {
        $line = $this->getInnerIterator()->current();
        $x = true;
        foreach ($this->filter  as $key => $var ) {
            if (isset($line[$key])) {
                $func = $this->filter[$key];
                $func($var) or $this->errors[$func] ++ and $x = false;
            }
        }
        return $x;
    }
}
CSVIterator
class CSVIterator implements \Iterator {
    protected $fileHandle;
    protected $line;
    protected $i;
    public function __construct($fileName) {
        if (! $this->fileHandle = fopen($fileName, 'r')) {
            throw new \RuntimeException('Couldn\'t open file "' . $fileName . '"');
        }
    }
    public function rewind() {
        fseek($this->fileHandle, 0);
        $this->line = fgetcsv($this->fileHandle);
        $this->i = 0;
    }
    public function valid() {
        return false !== $this->line;
    }
    public function current() {
        return array_map("trim", $this->line);
    }
    public function key() {
        return $this->i;
    }
    public function next() {
        if (false !== $this->line) {
            $this->line = fgetcsv($this->fileHandle);
            $this->i ++;
        }
    }
    public function __destruct() {
        fclose($this->fileHandle);
    }
}
単純なランダム関数 
function validateName($var) {
    return mt_rand(0, 5);
}
function validateEmail($var) {
    return mt_rand(0, 5);
}
function validateAddr($var) {
    return mt_rand(0, 5);
}
function validateBirtd($var) {
    return mt_rand(0, 5);
}
function validateUsername($var) {
    return mt_rand(0, 5);
}