2016-08-02 13 views
0

私は知っている特定の言葉から2行上に位置する行のIPを解析しようとしています、誰かがそれをする方法を考えさせることができますか? これは私に次の出力の3行目を与え、私のコードの一部...PHPでtxtファイルを読む

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;   
      } 

です:「10.23:私はIPをキャッチする必要が上記のよう

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

しかし。 255.252 "である。

テキストファイルが大きすぎるため、一部だけ貼り付けました。 (この例 - 5552での)サイトの数によると、私は、関連する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 

を見つける必要があるあなたが正規表現エンジンを指示するs修飾子を必要とする

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

私たちはあなたのコードの多くを見ることなく伝えることはできません。つまり、あなたがやっていることに全体的なアプローチがより良いと思っています。 いずれにしても、このルーチンをもう少し見せてください –

答えて

1

KDをssasd

/(.*site-5552)/ 
:からあなたの正規表現パターンを変更

.

に対して照合時に改行文字を含むように

へ:

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

Live demo

+0

私はそれを試しましたが、まだ動作しません... –

+0

@ K.D詳しい情報がなければ、なぜ動作しないのかはわかりません。私がリンクしているデモは、あなたが指定したソーステキストと正規表現のパターンを使って動作することを示しています。 – BeetleJuice

+0

私はさらに情報を追加しました。そのためにpreg_matchを使用しています。 $ match []を使用しようとするとエラーが発生します。 –