2017-05-31 6 views
-1

誰もが、私は次のように出力を必要とするはPHPでpreg_split()を使用してヘルプ

String [ 

date=2017-05-31 time=14:12:05 devname=FGT3HD3914801291 devid=FGT3HD3914801449 logid=0316013056 type=utm subtype=webfilter eventtype=ftgd_blk level=warning vd="root" policyid=63 sessionid=9389050 user="" srcip=172.30.10.90 srcport=53542 srcintf="port5" dstip=50.7.146.50 dstport=80 dstintf="port2" proto=6 service=HTTP hostname="noblockweb.org" profile="IT ADMIN" action=blocked reqtype=direct url="/wpad.dat?1925450516382f9869bdfee527b429fb23737930" sentbyte=126 rcvdbyte=325 direction=outgoing msg="URL belongs to a denied category in policy" method=domain cat=55 catdesc="Meaningless Content" crscore=10 crlevel=medium 

] 

下記の文字列に分割するpreg_split()関数を使用する方法を説明することができます構造 アレイ ( [0] =>日付= 2017年5月31日 [1] =>時間= 14:12:05 [20] => MSG = "URLは、ポリシーで拒否されたカテゴリに属します"。。。。。。 )

答えて

0

preg_splitはこれに適したツールではないかもしれません。この種の分割には、preg_match_allを使用することをお勧めします。

<?php 

    $str = 'date=2017-05-31 time=14:12:05 devname=FGT3HD3914801291 devid=FGT3HD3914801449 logid=0316013056 type=utm subtype=webfilter eventtype=ftgd_blk level=warning vd="root" policyid=63 sessionid=9389050 user="" srcip=172.30.10.90 srcport=53542 srcintf="port5" dstip=50.7.146.50 dstport=80 dstintf="port2" proto=6 service=HTTP hostname="noblockweb.org" profile="IT ADMIN" action=blocked reqtype=direct url="/wpad.dat?1925450516382f9869bdfee527b429fb23737930" sentbyte=126 rcvdbyte=325 direction=outgoing msg="URL belongs to a denied category in policy" method=domain cat=55 catdesc="Meaningless Content" crscore=10 crlevel=medium'; 

preg_match_all('/ ?(\w+\=(("[^"]*")|([^ ]*)))/',$str,$matches); 
print_r($matches[1]); 
  • '?' - スペース文字にマッチすると、最初の項目にも一致するはずですので、疑問符によってオプションとしてマークされます。
  • マッチした部分を元に戻すためのパントがあり、それらは表現のブロックを構築します。この最初のペアのペアは、私たちが興味を持っている部分の周りにあります。 Thatswhy $matches[1]が使用されます。 $matches[0]には、マッチした部分全体と可能な最初の空白文字が含まれます。
  • (... | ...) - バー文字は、その左右の部分が一致することを意味します。
  • ( "[^"] ") - 引用符で囲まれた文字列を一致させるためのものです。[^"]は引用符ではないものすべてに一致します。角括弧は、一致する文字のクラスを作成します。キャレット^がクラスの最初の文字である場合、クラスが反転されていることを意味します。
  • ([^] *) - 可能なゼロ長の空白文字以外のものすべて。
+0

ありがとうございました。 – jani

関連する問題