makowskid / dcfparser
DcfParser - parse Debian Control Files with PHP
Installs: 642
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/makowskid/dcfparser
Requires
- php: ^8.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^12.0
This package is auto-updated.
Last update: 2026-02-05 15:35:35 UTC
README
DcfParser is a PHP & Laravel package to parse Debian Control Files (DCF format).
Requirements
- PHP 8.2+
Installation
composer require makowskid/dcfparser
Usage
Parse a file (first stanza)
$parser = new \makowskid\DcfParser\DcfParser(); $data = $parser->parseFile('/path/to/control'); // ['source' => 'gentoo', 'section' => 'games', ...]
Parse a string
$data = $parser->parseString("Source: gentoo\nSection: games\n");
Parse all stanzas
DCF files can contain multiple stanzas (paragraphs) separated by blank lines:
$stanzas = $parser->parseFileAll('/path/to/control'); // or $stanzas = $parser->parseStringAll($content); // Returns: [['source' => 'gentoo', ...], ['package' => 'gentoo', ...]]
Laravel
The package auto-discovers its service provider. Use the facade:
\DcfParser::parseFile('/path/to/control'); \DcfParser::parseString($content); \DcfParser::parseFileAll('/path/to/control'); \DcfParser::parseStringAll($content);
DCF Format
Reference: https://www.debian.org/doc/debian-policy/ch-controlfields.html
Example input:
Source: gentoo
Section: games
Priority: optional
Maintainer: Josip Rodin <joy-mg@debian.org>
Build-Depends: debhelper (>=10)
Homepage: https://packages.debian.org/gentoo
Package: gentoo
Architecture: any
Description: A nice game
Gentoo is a classic Jumpn Run sidescrolling game.
Parsed result (first stanza):
[
'source' => 'gentoo',
'section' => 'games',
'priority' => 'optional',
'maintainer' => 'Josip Rodin <joy-mg@debian.org>',
'build-depends' => 'debhelper (>=10)',
'homepage' => 'https://packages.debian.org/gentoo',
]
Key behaviors:
- Keys are normalized to lowercase
- Only the first
:splits key from value - Continuation lines (starting with whitespace) are appended to the previous field
- Blank lines separate stanzas
- Comment lines (starting with
#) are skipped - Throws
DcfParserExceptionon malformed input or file errors
Development
composer install composer test # Run tests composer analyse # PHPStan (level 8) composer cs-fix # Fix code style composer cs-check # Check code style
Credits
- Dawid Makowski
- Alin Purcaru - thanks for inspiration on StackOverflow
License
The MIT License (MIT). See the License File for more information.