1. Go to this page and download the library: Download byjg/anydataset-text library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
$file = file_get_contents("example2.csv");
// If omit `withFields` will get the field names from first line of the file
$dataset = \ByJG\AnyDataset\Text\TextFileDataset::getInstance($file)
->withFieldParser(\ByJG\AnyDataset\Text\TextFileDataset::CSVFILE);
$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('firstname'); // Print "John", "Jane"
echo $row->get('lastname'); // Print "Doe", "Smith"
}
$definition = new FixedTextDefinition(
$fieldName, # The field name
$startPos, # The start position of this field in the row
$length, # The number of characteres of the field content
$type, # (optional) The type of the field content. FixedTextDefinition::TYPE_NUMBER or FixedTextDefinition::TYPE_STRING (default)
$ # new FixedTextDefinition(...),
# ],
# "N" => new FixedTextDefinition(...)
# ]
);
$file = "".
"001JOAO S1520\n".
"002GILBERTS1621\n";
$fieldDefinition = [
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('id', 0, 3, FixedTextDefinition::TYPE_NUMBER),
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('name', 3, 7, FixedTextDefinition::TYPE_STRING),
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('enable', 10, 1, FixedTextDefinition::TYPE_STRING, ['S', 'N']), // Required values --> S or N
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('code', 11, 4, FixedTextDefinition::TYPE_NUMBER),
];
$dataset = new \ByJG\AnyDataset\Text\FixedTextFileDataset($file)
->withFieldDefinition($fieldDefinition);
$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('id');
echo $row->get('name');
echo $row->get('enabled');
echo $row->get('code');
}
$file = "".
"001JOAO S1520\n".
"002GILBERTS1621\n";
$fieldDefinition = [
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('id', 0, 3),
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('name', 3, 7),
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition(
'enable',
10,
1,
FixedTextDefinition::TYPE_STRING,
null,
[
"S" => [
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('first', 11, 1),
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('second', 12, 3),
],
"N" => [
new \ByJG\AnyDataset\Text\Definition\FixedTextDefinition('reason', 11, 4),
]
]
),
];
$dataset = new \ByJG\AnyDataset\Text\FixedTextFileDataset($file)
->withFieldDefinition($fieldDefinition);
$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('id');
echo $row->get('name');
echo $row->get('enabled');
echo $row->get('first'); // Not empty if `enabled` == "S"
echo $row->get('second'); // Not empty if `enabled` == "S"
echo $row->get('reason'); // Not empty if `enabled` == "N"
}
$fieldDefinition = [ ... ]; # See above about field defintion
$formatter = new FixedSizeColumnFormatter($anydataset->getIterator(), $fieldDefinition);
$formatter->setPadNumner(string); # Default: 0
$formatter->setPadString(string); # Default: space character
$formatter->toText();