fastix®: Bestimmte Zahl aus Textfile auslesen

Beitrag lesen

Moin!

Ist der Text eindeutig?
Ist die Datei sehr groß?

Ok. Die Datei ist "sehr" groß.

<?
$str="TGS";
$strFile="datei.dat";

Einlesen der einen Zeile mit dem "system()" Befehl und Unix-Zeilenfilter grep

$strZeile=system("grep $str $strFile");

Trennen am Gleichheitszeichen-> Array

$arZeile=explode("=", $strZeile);

Ausgabe des Inhaltes:

echo $arZeile[0];
?>

Variante A1 (mit AWK):

$str="TGS";
$strFile="datei.dat";

Einlesen der einen Zeile mit dem "system()" Befehl und Unix-Zeilenfilter grep und AWK

$strZahl=system("grep $str $strFile | awk -F= '{ print $1 }'");
echo $strZahl;

Du solltest $str und $strFile mit escapeshellcmd() behandeln, falls diese Daten _irgendwie_ von außen beinflusst werden können.

Variante 2 für "kurze" Dateien (Alles in PHP:)

<?
$str="TGS";
$strFile="datei.dat";
$arZeilen=file($strFile);

$arZeilen enthält jetzt als Array die Zeilen der Textdatei.

foreach ($arZeilen as strZeile) {

Für jedes array-Element als Zeile

$arZeile=explode("=", $strZeile);
  if  ($arZeile[1]==$str) {
     echo $arZeile[0];
     break;
  }
}
?>

Der Unterschied ist folgender: Wenn datei.dat wirklich sehr groß ist ist das nicht nur schneller (der UNIX-Befehl grep ist schnell...), sondern spart auch das Einlesen in PHP: Folge: Du umgehst eine möglicherweise zur Disfunktion führende Speicherbeschränkung :)

Allerdings solltest Du bei solchen Dateigrößen schon eine Datenbank benutzen.

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development