2016-08-02 19 views
0

Ich versuche par ip in Zeile, die 2 Zeilen oberen von bestimmten Wörtern, die ich weiß, kann jemand eine Idee geben, wie es zu tun? Dies ist Teil meines Codes ...Txt-Datei mit PHP lesen

if (($handle = fopen('FW1-20160802_1530.conf', "r")) !== FALSE){ 
while (($data = fgetcsv($handle, 1000,";")) !== FALSE) 
.. 
else if (preg_match('/(.*site-5552)/',$data[0],$match)) 
      { 
       list(,$line)=$match; 
       $REV_ARRAY[$site_name]['line']=$line;   
      } 

Das hat mich die dritte Zeile der folgenden Ausgabe gibt:

edit 2 
     set dst 10.23.255.252 255.255.255.252 
     set device "abc" 
     set comment "Static Route site-5552" 

Aber wie ich oben erwähnt muss ich fangen die ip: „10.23. 255.252 ", die zwei Zeilen oberen besteht.

Die Textdatei ist zu groß, also habe ich nur einen Teil davon eingefügt. Nach Platznummer (in diesem Beispiel- 5552) Ich brauche die entsprechende IP (10.93.255.252)

edit "Site-5552" 
    set asdaa 
    set asdsdaa 
    set aadsda 
    set aasdda 
    set aaaa 
    set adsaa 
    set aadsa 
    set vvxv 
    set dsds 
    set czx 
finden ssasd

edit 2 
     set dst 10.93.255.252 255.255.255.252 
     set device "sdasdsad" 
     set comment "Static Route for LTE site-5552" 
+0

ohne die wir nicht sagen können, mehr aus Ihrem Code zu sehen. Davon abgesehen werde ich vermuten, dass es einen besseren Gesamtansatz für das gibt, was Sie tun. So oder so, zeigen Sie uns ein bisschen mehr von dieser Routine –

Antwort

1

KD benötigen Sie den s Modifikator die Regex-Engine zu sagen, new-line Zeichen enthalten, wenn sie gegen .

passende

Ihre RegexMuster ändern von:

/(.*site-5552)/ 

An:

/set dst ([\d\.]+).*site-5552/s 

Live demo

+0

Ich habe es versucht, aber es funktioniert immer noch nicht ... –

+0

@ K.D Ohne weitere Informationen kann ich Ihnen nicht sagen, warum es nicht funktioniert. Die Demo, mit der ich verlinkt habe, zeigt, dass sie mit dem von Ihnen gelieferten Quelltext und dem von mir verwendeten Regex-Muster funktionieren sollte. Ich habe – BeetleJuice

+0

hinzugefügt. Ich habe weitere Informationen hinzugefügt und verwende preg_match dafür. Ich erhalte einen Fehler, wenn ich versuche, $ match [] zu verwenden. –