Skip to content

Instantly share code, notes, and snippets.

@allixsenos
Created July 31, 2012 13:32
Show Gist options
  • Save allixsenos/3217067 to your computer and use it in GitHub Desktop.
Save allixsenos/3217067 to your computer and use it in GitHub Desktop.
parser za popis duznika - php 5.4
#!/usr/local/php5/bin/php
<?php
$files = glob('*/svi/*.html');
$fields = [];
$fields['po'] = [
'rbr',
'imeprezime',
'mjesto',
'mjestoprebivalista',
'pdv',
'dobit',
'dohodak',
'doprinosi',
'trosarine',
'nekretnine',
'carina',
'ukupno',
'napomena'
];
$fields['fo'] = [
'rbr',
'imeprezime',
'mjesto',
'godinarodjenja',
'mjestoprebivalista',
'pdv',
'dobit',
'dohodak',
'doprinosi',
'trosarine',
'nekretnine',
'carina',
'ukupno',
'napomena'
];
$fields['gr'] = $fields['fo'];
$numbers = array('pdv', 'dobit', 'dohodak', 'doprinosi', 'trosarine', 'nekretnine', 'carina', 'ukupno', 'rbr');
foreach ($files as $file) {
$data = [];
$vrsta = explode('/', $file)[0];
$html = file_get_contents($file);
preg_match_all('@<tr class="(?:odd|even)Row">(.*)</tr>@Uis', $html, $rows);
foreach ($rows[1] as $r) {
preg_match_all('@<td[^>]*>(.*)</td>@Uis', $r, $cols);
$datarow = [];
foreach ($cols[1] as $key => $c) {
$col = $fields[$vrsta][$key];
$c = trim($c);
if (in_array($col, $numbers)) {
$c = str_replace(',', '.', str_replace('.', '', $c));
}
if (($col == 'napomena') && $c) {
$c = trim(strip_tags($c));
}
$datarow[$col] = $c;
}
$data[] = $datarow + compact('file', 'vrsta');
}
if ($data) {
DB::insert('duznici', $data);
}
echo "{$file} processed, inserted ", count($data), " rows\n";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment