hawkmaster: Zeilennummer Fundstelle preg_match_all

Hallo zusammen,

ich durchsuche Dateien (php) Dateien nach dem Vorkommen bestimmter Variablen.

  
$fp = fopen($search_file_path, 'r');  
$string = fread($fp, filesize($search_file_path));  
fclose($fp);  
if (preg_match_all("#text_arr\[(.*?)\]#", $string, $contents)){  
foreach($contents[1] as $item){  
echo "gefunden wurde $item <br>";  
}  
}  

Das klappt soweit ganz gut.
Wie könnte man es nun noch hinbekommen, dass zusätzlich die Zeilennummer der Fundstelle ausgegeben wird?

vielen Dank und viele Grüße
hawk

  1. hi,

    Wie könnte man es nun noch hinbekommen, dass zusätzlich die Zeilennummer der Fundstelle ausgegeben wird?

    Tja mein Lieber, in Perl steht die in $. (einer Standardvariablen). Sowas sollte PHP aber auch bringen.

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
  2. Guten Tag,

    Wie könnte man es nun noch hinbekommen, dass zusätzlich die Zeilennummer der
    Fundstelle ausgegeben wird?

    So, wie du die Ergebnisse ermittelst, kann PHP die Zeilennummer nicht kennen, denn du liest die Datei als einen String ein. Iteriere lieber über die Dateizeilen und matche jede Zeile, dann kannst du auch die Nummer der Zeile mitführen und ausgeben.

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin
  3. Hello,

    Das klappt soweit ganz gut.
    Wie könnte man es nun noch hinbekommen, dass zusätzlich die Zeilennummer der Fundstelle ausgegeben wird?

    Eine Datei hat von Haus aus keine Zeilennummer, da sie klassisch als fortlaufender Bytestream dargestellt wird. Wenn Du nun Aufsetzpunkte in der Datei markieren willst, dann musst Du selber entscheiden, ob es sich um eine "Textdatei" handelt, die dann entsprechende Merker für das "Zeilenende" enthält.

    Du könntest bei Verwendung einer solchen "Textdatei" also von vorne herein die Datei in "Zeilen" zerlegen, indem Du z.B. eine passende Einlesefunktion benutzt ( file(), fgets(), ... )oder aber für den Stream der Datei den passenden Seperator setzt.

    http://www.php.net/manual/en/book.stream.php
    http://www.php.net/manual/en/function.stream-get-line.php

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de