Datei nach Schema auslesen


EuroCent

Erfahrenes Mitglied
Hallo zusammen,

mal wieder Ich :D

Ich lass mir aus einem Ordner alle Dateien anzeigen und füge sie der Selectbox ein.
Nun möchte Ich wenn eine Datei gewählt wird, dass in einer leeren Tabelle der Inhalt wie folgt ausgegeben wird:
[INHALT DER DATEI]
Code:
[25.06.2018 05:39:54]~[SUCCESS]: [MELDUNG]
[25.06.2018 05:54:29]~[WARNING]: [MELDUNG]
[25.06.2018 15:31:17]~[INFO]: [MELDUNG]
[25.06.2018 15:31:17]~[ERROR]: [MELDUNG]
[25.06.2018 15:31:17]~[NOTICE]: [MELDUNG]
[25.06.2018 15:31:17]~[FATAL]: [MELDUNG]
[AUSGABE]
HTML:
<table class="table table-hover table-striped table-bordered">
    <thead class="thead-vf">
        <tr>
            <th>Datum</th>
            <th>Status</th>
            <th>Meldung</th>
        </tr>
    </thead>
    <tbody id="loadTimes">
        <tr>
            <td>00.00.0000 00:00:00</td>
            <td><span class="badge badge-success">SUCCESS</span></td>
            <td>Meldung</td>
        </tr>
        <tr>
            <td>00.00.0000 00:00:00</td>
            <td><span class="badge badge-warning">WARNING</span></td>
            <td>Meldung</td>
        </tr>
        <tr>
            <td>00.00.0000 00:00:00</td>
            <td><span class="badge badge-info">INFO</span></td>
            <td>Meldung</td>
        </tr>
        <tr>
            <td>00.00.0000 00:00:00</td>
            <td><span class="badge badge-danger">ERROR</span></td>
            <td>Meldung</td>
        </tr>
        <tr>
            <td>00.00.0000 00:00:00</td>
            <td><span class="badge badge-primary">NOTICE</span></td>
            <td>Meldung</td>
        </tr>
        <tr>
            <td>00.00.0000 00:00:00</td>
            <td><span class="badge badge-danger">FATAL</span></td>
            <td>Meldung</td>
        </tr>
    </tbody>
    <tfoot class="tfoot-vf">
        <tr>
            <th>Datum</th>
            <th>Status</th>
            <th>Meldung</th>
        </tr>
    </tfoot>
</table>
Allerdings hab Ich noch nicht soviel mit auslesen von Files gearbeitet, so dass Ich etwas in der Klamme stecke :(

Hat hier einer einen Hinweis, oder eine Idee? :)
 

Sempervivum

Erfahrenes Mitglied
Ich würde die Datei mit file() auslesen, dann bekommst Du die Zeilen in einem Array, das Du in einer Schleife abarbeiten kannst. Die Felder in jeder Zeile kannst Du mit preg_match() ermitteln, denn der Aufbau der Zeilen ist ja offenbar immer gleich.
 

EuroCent

Erfahrenes Mitglied
Ich hatte mir das schon fast gedacht, aber war mir überhaupt nicht sicher ob es der Richtige weg ist. :)

zum preg_match, wie müssen da die regex aussehen? :(
Habe damit sehr wenig erfahrung.

aktuell hab Ich es mal damit Probiert, damit Ich alle Zeiten erhalte.
Allerdings bringt er mir immer 2 Array mit den Werten im $matches :/

PHP:
<?php
$file = filter_input(INPUT_POST, 'logPages');
$test = file($file);

$getNew = '';

$matches = null;

foreach($test as $line) {
    $getNew .= $line;
}

$returnValue = preg_match_all('/([0-9]{2}.[0-9]{2}.[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2})/', $getNew, $matches, PREG_PATTERN_ORDER);

__checkValues($matches); //printf('<pre>%s</pre>', print_r($matches, true));
?>
 

Sempervivum

Erfahrenes Mitglied
Allerdings bringt er mir immer 2 Array mit den Werten im $matches :/
Das liegt daran, dass Du preg_match_all verwendet hast, dann liefert er ein mehrdimensionales Array. Den Aufbau habe ich jetzt nicht im Kopf, er hängt von den Optionen ab, Du kannst ihn in der Doku nachlesen.
Wahrscheinlich geht es aber einfacher, denn ich habe dich so verstanden, dass Du ja eine HTML-Tabelle erzeugen willst. Dann empfehle ich, in jedem Schleifendurchlauf mit preg_match die drei Parameter aus der aktuellen Zeile zu lesen und daraus die Tabellenzeile zu erzeugen.
 

Sempervivum

Erfahrenes Mitglied
BTW: Dies:
PHP:
$test = file($file);

$getNew = '';

$matches = null;

foreach($test as $line) {
    $getNew .= $line;
}
tut genau das selbe wie ein Einzeiler mit file_get_contents()