php-fwf is a fast, type-safe PHP library for parsing, validating, and exporting Fixed Width Files (FWF).
It is part of the Fixed Width File Ecosystem and fully implements the fwf-compliance-tests v1.0.0 specification.
- Type-Safe Columns:
CharColumn,RightCharColumn,PositiveIntegerColumn,PositiveDecimalColumn,DateColumn,TimeColumn, andDateTimeColumn. - Flexible Descriptors: Structured records with
HeaderRowDescriptor,DetailRowDescriptor, andFooterRowDescriptor. - Multiple Output Renders: Export layout specifications to Markdown, ReStructuredText (RST), or HTML tables via
RenderUtils. - Full Test Suite & Compliance: 100% compliant with
fwf-compliance-testsv1.0.0. - Git Hooks Ready: Pre-configured
pre-commitandpre-pushhooks.
Install via Composer:
composer require kelsoncm/php-fwf<?php
use Kelsoncm\Fwf\Columns\CharColumn;
use Kelsoncm\Fwf\Columns\PositiveIntegerColumn;
use Kelsoncm\Fwf\Descriptors\DetailRowDescriptor;
use Kelsoncm\Fwf\Descriptors\FileDescriptor;
use Kelsoncm\Fwf\Readers\Reader;
// 1. Define columns
$nameCol = new CharColumn('name', 20, 'User Name');
$ageCol = new PositiveIntegerColumn('age', 3, 'Age in years');
// 2. Define row and file descriptors
$detail = new DetailRowDescriptor([$nameCol, $ageCol]);
$fileDescriptor = new FileDescriptor([$detail]);
// 3. Read fixed-width file content
$content = "KELSON MEDEIROS 045\nMARIA SILVA 030\n";
$reader = new Reader($content, $fileDescriptor, "\n");
foreach ($reader as $row) {
echo "Name: {$row['name']} | Age: {$row['age']}\n";
}Generated documentation is ready for GitHub Pages publication in the docs/ directory:
- Landing Page: docs/index.html
- API Documentation: docs/apidocs/index.html
Run all unit tests and compliance checks using PHPUnit:
vendor/bin/phpunitSet up pre-commit and pre-push hooks:
pre-commit install
pre-commit install --hook-type pre-pushRun checks manually:
pre-commit run --all-filesThis project is licensed under the MIT License - see the LICENSE file for details.