User Tools

Site Tools


deprecated:php:filterdatafromcsv

[PHP] Filter Data from CSV

Deprecated

Dieser Code ist entweder total a) veraltet, b) sonst Schrott oder c) nix was ich noch auf meiner Seite veröffentlichen muss

Er ist nur noch online damit nicht irgendwelche Forumslinks ins Nirvana zeigen.

→ Read more...

Ein kleines Beispiel wie man Daten aus einer CSV-Datei lesen kann und diese auch noch ausfiltern.

Datenquelle

table.csv
ID;NAME;TEXT
1;Test1;Hallo Welt
2;Test2;Aber hallo Erde!
3;Test3;Erde an Mars, bitte kommen

Code

<?php
//Suchbegriff
$search = "*hallo*";
 
//Aus den Windows Platzhaltern Reguläre Platzhalter machen
$win2RegexpPattern = array('*', '?', '#');
$win2RegexpReplace = array('.*', '.?', '.{1}');
$pattern = '/^'.str_replace($win2RegexpPattern, $win2RegexpReplace, $search).'$/is';
 
//Datei einlsen
$handle = fopen ("table.csv","r"); 
while (($row = fgetcsv ($handle, 1000, ";")) !== FALSE ) {
	$rows[] = $row;
}
fclose ($handle);
 
//Erste Zeile als Header auslesen
$header = array_shift($rows);
 
//Die Zeilen mit dem Header indexieren
foreach($rows as &$row){
	$row = array_combine($header, $row);
}
 
//Die Zeilen ausfiltern
$filteredRows= array_filter($rows, create_function('$row', "return preg_match('{$pattern}', \$row['TEXT']);"));
 
//Resultat asgeben
echo <<<EOT
<table>
	<tr><th>ID</th><th>NAME</th><th>TEXT</th></tr>
 
EOT;
 
foreach($filteredRows as $row){
	echo "    <tr><td>{$row['ID']}</td><td>{$row['NAME']}</td><td>{$row['TEXT']}</td></tr>\n";
}
echo "</table>";
 
?> 

Man kann natürlich auch direkt im auslesen der Date den Filter anwenden. Je nach bedarf macht das eine oder das andere Sinn.

Ausgabe

<table>
	<tr><th>ID</th><th>NAME</th><th>TEXT</th></tr>
	<tr><td>1</td><td>Test1</td><td>Hallo Welt</td></tr>
	<tr><td>2</td><td>Test2</td><td>Aber hallo Erde!</td></tr>
</table>
deprecated/php/filterdatafromcsv.txt · Last modified: 11.12.2013 10:54:22 (external edit)