編集:
私がHTMLを解析しようとしていると思われているようですが、ログを解析しようとしていることを2、3回強調しており、<option>
構造は私のログに似ています。
私のログは次のようになります。
!# [2013-03-04 14:51:31] // cluster1 BEGIN \\
!## apache: 41
!## mysql: 31
!## tomcat: 81
!## lotus: 985
!# [2013-03-04 14:51:56] // cluster1 END \\
!# [2013-03-04 14:51:56] // cluster2 BEGIN \\
!## apache: 13
!## mysql: 61
!## tomcat: 6
!## lotus: 513
!# [2013-03-04 14:52:13] // cluster2 END \\
この正規表現を機能させることができません。おそらくそれは不可能です。助けが必要です:)
基本的に、私は一度に親エンティティから複数の子要素を正規表現しようとしています。簡潔にするために<select>
、例としてドロップダウンHTML要素を使用します。これは実際にログの解析に使用されますが、どの形式になるかはまだ正確にはわかりません。ドロップダウン要素は、ログの構造を説明しなくても、必要なものに限りなく近いものです。
したがって、ドロップダウンがあると仮定しましょう。
<select class="parent">
<option value="1">First child</option>
<option value="2">Second child</option>
<option value="3">Third child</option>
...
</select>
親から要素を分離するため<option>
に、私はこれを使用します:
preg_match_all('/<select class="parent">(.*)<\/select>/is', $source, $matches);
これは素晴らしいことです。しかし今、私はpreg_match()
自分の要素を除外するために1秒を実行する必要があるので、次<option>
のようになります。
preg_match_all('/<option value="(.*?)" >(.*?)<\/option>/is', $matches['1'], $finalMatches);
そして、私は私の結果をうまく得ています。しかし、2つのコマンドを1つのルールに組み合わせる方法はありますか?したがって、親要素(この場合はブロック)を見つけて、その親内で見つかった各エントリ<select class="parent">*</select>
を除外しますか?<option value="*">*</option>
次に、最初の結果を繰り返してから、各繰り返しで別のpreg_match関数を完了するのではなく、親子の組み合わせの完全な配列が残ります。