husam-awadhi / power-parser
a powerful file parsing tool
Requires
- php: >=8.1
- phpoffice/phpspreadsheet: ^1.28 || ^2.2.2
- symfony/yaml: ^7.1.6
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^1.0
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/extension-installer: ^1.4.3
- phpstan/phpstan: ^1.12.3
- phpstan/phpstan-phpunit: ^1.4.0
- phpunit/php-code-coverage: >=10.1.15
- phpunit/phpunit: ^9.6.6 || ^10.5.26
- squizlabs/php_codesniffer: ^3.10.2
- symfony/var-dumper: ^6.4.9
README
File parsing tool with a configured blueprint design with support for ods
, xlsx
, xls
, xml
, html
, sylk
, csv
file types out-of-the-box.
Installation
Require PowerParser using Composer:
composer require husam-awadhi/power-parser
Usage
To parse a file you'll need to a Parser
instance which can be done by using these 3 lines. which will return the parsed file data, ready for your magic! 🎇
try { $pp = new PowerParser(); $parser = $pp->getParserBuilder( stream: 'path-to-blueprint.yml', file: 'path-to-file.ext' )->build(); $parsedData = $parser->parse()->getAsArray(); } catch (Exception $e) { // hmm }
Blueprint
Blueprint Basics
refer to example, Valid Blueprint
Version string
blueprint version. not yet utilized but will be used for backward compatibility.
Meta object
object contains meta data.
File object
object contains parsed file meta data.
Extension string
parsed file extension.
Name string
parsed file name. only used in the returned parsed file data.
Blueprint object array
array of main parameters to capture data in parsed file.
Name string
code of captured data, when returning the parsed as array this will be used as array key for the matched data.
Mandatory boolean
when true, parsing will throw an exception if data not matched in the parsed file.
Conditions objects array
rules and clauses for finding an element.
Column integers array
expected location, a column number in Excel or CSV file
is, isNot, anyOf, noneOf string
[one only]
Used to match the condition with the given value. If you want to use null as a value, use "{null}"
, which will be converted in the BlueprintInterpreter
.
Fields objects array
once a match has been found, any data defined here will be captured.
Name string
The name of the data found in the field. When returning the parsed data as an array, this will be used as the array key for the matched data.
Position integer
cell number in Excel or CSV files
Format format
[optional]
formats applied to matched data, refer to Processors
Processors
processors has 2 types,
Casting
- bool-strict:
true
- if value =
true
,1
,"true"
- if value =
- bool:
false
,- if value has a value and is not equal to
true
. - If value is
true
,1
, or"true"
.
- if value has a value and is not equal to
- int: PHP casting
- float: PHP casting
Example:
blueprint: - fields: - name: cash position: 1 type: int
Formatting
- money
- string length limits
Example:
blueprint: - fields: - name: cash position: 1 format: f%2 # input: 23.441 output: 23.44 - name: cash position: 1 format: s%5 # input: 'sweets' output: 'sweet'
License
PowerParser is an open-sourced software licensed under the MIT license.