In der täglichen Entwicklung ist die Verarbeitung von CSV-Dateien (Comma-getrennte Werte) eine sehr häufige Aufgabe. Während PHP integrierte Funktionen wie fGetCSV () zur Analyse von CSV-Dateien bietet, müssen wir manchmal die Parsen-Logik selbst schreiben, um eine flexiblere oder leichtere Lösung zu erreichen. In diesem Artikel wird ein einfacher, aber praktischer CSV -Datei -Parser erstellt, indem die Funktion exploit () in PHP verwendet wird.
Mit der Funktion exploit () werden Zeichenfolgen in Arrays aufgeteilt. Dies ist die Kernidee, CSV -Dateien zu analysieren: Teilen Sie jede Zeile mit dem neuen Zeilenzeichen auf und teilen Sie dann den Inhalt jeder Zeile durch Kommas in Felder auf.
Wir erstellen eine Funktion namens Parsecsv , um CSV -Dateien zu analysieren. Es nimmt einen Dateipfad als Argument ein und gibt ein zweidimensionales Array von Zeilenarrays zurück.
function parseCSV($filepath) {
if (!file_exists($filepath)) {
throw new Exception("Die Datei existiert nicht: $filepath");
}
$content = file_get_contents($filepath);
$lines = explode(PHP_EOL, $content);
$data = [];
foreach ($lines as $line) {
if (trim($line) === '') {
continue;
}
$fields = explode(',', $line);
$data[] = $fields;
}
return $data;
}
Angenommen, wir haben eine Datei namens Data.csv mit dem folgenden Inhalt:
name,email,age
Alice,[email protected],30
Bob,[email protected],25
Wir können die Funktion verwenden, die wir gerade geschrieben haben, um ihren Inhalt zu lesen und auszugeben:
$csvFile = 'https://gitbox.net/files/data.csv';
file_put_contents('temp.csv', file_get_contents($csvFile));
try {
$result = parseCSV('temp.csv');
foreach ($result as $row) {
echo implode(' | ', $row) . "<br>";
}
} catch (Exception $e) {
echo 'Fehler: ' . $e->getMessage();
}
Ausgabe:
name | email | age
Alice | [email protected] | 30
Bob | [email protected] | 25
Ein Fall, in dem Kommas in dem Feld enthalten sind
Die Funktion von Exploit () kann komplexe CSV -Linien nicht verarbeiten, die in doppelte Zitate und Felder, die Kommas enthalten, verpackt sind. Diese Situation wird empfohlen, fGetCSV () zu verwenden.
Dateicodierung <br> Stellen Sie sicher, dass die CSV-Datei UTF-8 codiert ist. Andernfalls müssen Sie zuerst eine Codierungskonvertierung durchführen, z. B. unter Verwendung von mb_convert_encoding () .
Sicherheit <br> Vermeiden Sie das Laden von CSV -Dateien aus nicht vertrauenswürdigen Quellen und verhindern Sie potenzielle Code -Injektion oder Pfadanschläge.
Verwenden Sie die Funktion exploit () , um schnell einen grundlegenden CSV -Parser für einfache CSV -Dateien zu erstellen. Für Szenarien, in denen eine höhere Kompatibilität und Genauigkeit erforderlich sind, wird empfohlen, die integrierte FGGetCSV () -Funktion in PHP zu verwenden. In leichten Szenarien ist der von Ihnen implementierte Parser jedoch ebenfalls vollständig qualifiziert.
In diesem Beispiel lernen Sie nicht nur die praktische Anwendung von exploit () , sondern beherrschen auch, wie CSV -Dateien einfachste verarbeitet werden. Wenn Sie einen CSV -Leser erstellen möchten, der keine externen Abhängigkeiten benötigt, ist dieser Ansatz ein sehr guter Ausgangspunkt.