wmaraci reklam
tr.link

parse işlemi hakkında

4 Mesajlar 506 Okunma
acebozum
tr.link

ourplaner ourplaner WM Aracı Kullanıcı
  • Üyelik 24.12.2015
  • Yaş/Cinsiyet 41 / E
  • Meslek Yazılım Geliştirme Uzmanı
  • Konum Kocaeli
  • Ad Soyad Ş** O**
  • Mesajlar 1
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
merhaba. elimde bir kayıt var ve bu kaydı parçalamak istiyorum fakat bir çok değer olduğu için nasıl yapacağımı bulamadım. aşağıda örnek var. kalın yazılı olanlar parçalanması gereken yerler bu değerler değişkenler oluyor ayrıca. mysql üzerinde bir satırdan bu veriyi çekip aşağıdaki gibi bir düzene sokmam lazım. yardımcı olabilirseniz sevinirim.

in: user1> out: vlan1, src-mac 4c: 5e: 0c: 0c: 0c: 0c, proto TCP (ACK), 192.168.1.5:47694->74.125.154.73:443, NAT (192.168.1.5 : 47694-> 123.123.123.123:15400) -> 74.125.154.73:443, len 52

mysql dönüşüde aşağıdaki gibi olması lazım.

1 satır : user1
2 satır : 4c: 5e: 0c: 0c: 0c: 0c
3 satır : 192.168.1.5:47694
4 satır : 74.125.154.73:443
5 satır : 123.123.123.123:15400
6 satır : 74.125.154.73:443
 

 

googleasistan
reklam

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
özel olarak işleyeceksin tek tek.

, explode et.

gelen her satırda neyi istemiyorsan. onu sil. oldu bitti.
 

 

MuhammedArslan MuhammedArslan Msa Web Tasarım Kullanıcı
  • Üyelik 19.02.2017
  • Yaş/Cinsiyet 24 / E
  • Meslek Web Developer
  • Konum Bursa
  • Ad Soyad M** A**
  • Mesajlar 933
  • Beğeniler 136 / 276
  • Ticaret 11, (%100)
SancarSaran 'a katılıyorum. En mantıklı yol bu olacaktır. Regex ile aradaki ifadeleri çekmeyi de deneyebilirsin de emin ol çok daha zor olur.


Örnek birkaç satır;

$text = "in: out: vlan1, src-mac 4c: 5e: 0c: 0c: 0c: 0c, proto TCP (ACK), 192.168.1.5:47694->74.125.154.73:443, NAT (192.168.1.5 : 47694-> 123.123.123.123:15400) -> 74.125.154.73:443, len 52";



$a = explode(',', $text);



$line1 = str_replace('in: $line1 = str_replace('> out: vlan1', '', $line1);


$line2 = str_replace('src-mac ', '', $a[1]);
ourplaner

kişi bu mesajı beğendi.

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Bazı yerleri saçma gelebilir ama iş görür. Gelen veri tipi değişirse bu desen çalışmayacak bu yüzden bir süre deneme yanılmalar ile deseni geliştirebilirsin.


$input= 'in: out: vlan1, src-mac 4c: 5e: 0c: 0c: 0c: 0c, proto TCP (ACK), 192.168.1.5:47694->74.125.154.73:443, NAT (192.168.1.5 : 47694-> 123.123.123.123:15400) -> 74.125.154.73:443, len 52';
$pattern = '/(user[0-9])(.+)(([0-9]{1}[a-z]{1}:? ?){6})(.+)(\(ACK\), )(([0-9\.]+:[0-9]+)->([0-9\.]+:[0-9]+))(.+)( NAT \()(([0-9\.]+ : [0-9]+)(->) ([0-9\.]+:[0-9]+))(\) -> )([0-9\.]+:[0-9]+)/';
preg_match_all($pattern, $input, $matches);

print_r($matches);

echo '#0'.PHP_EOL;
echo "1. satır : {$matches[1][0]}".PHP_EOL;
echo "2. satır : {$matches[3][0]}".PHP_EOL;
echo "3. satır : {$matches[8][0]}".PHP_EOL;
echo "4. satır : {$matches[9][0]}".PHP_EOL;
echo "5. satır : {$matches[15][0]}".PHP_EOL;
echo "5. satır : {$matches[17][0]}".PHP_EOL;

echo PHP_EOL;
echo '#1'.PHP_EOL;
echo "1. satır : {$matches[1][0]}".PHP_EOL;
echo "2. satır : {$matches[3][0]}".PHP_EOL;
echo "3. satır : {$matches[7][0]}".PHP_EOL;
$re = str_replace(' : ', ':', $matches[12][0]);
echo "4. satır : ({$re}) -> {$matches[17][0]}".PHP_EOL;
 

 

no time for caution
wmaraci
wmaraci
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al