2011-12-06 14 views
0

PHP/Regexを使用してアプリケーションのデータを解析しています。私が解析しているページには、ヘッダの後ろに一連の項目が含まれる表形式があります。私がしようとしているのは、各項目をそのグループの一部(ヘッダーで定義)にラベル付けできるように、すべての項目とともに各表のヘッダーを取得することです。Regexが次の一致にスキップする

私は現在、各ヘッダーに一致する式で設定してから、次のヘッダーまですべて設定します。次に、最初の式の2番目の一致の追加データと一致させるために、ヘッダカウントにループを使用します。そこで、基本的

preg_match_all ('#table-header.*?>(.*?)<\/td>(.*?)table-header#s', $url, $gr, PREG_PATTERN_ORDER); 

for($i = 0; $i < count($gr[0]); $i++) { 
    preg_match_all ('#type_id.*?<b>(.*?)</b> ... #s', $gr[2][$i], $info, PREG_PATTERN_ORDER); 
    $group = trim($gr[1][$i]); 

    for($ii = 0; $ii < count($info[0]); $ii++) { 
    $name = trim($info[1][$ii]); 
    ... 
    } 
} 

私の問題は、それが他のすべてのグループをスキップしていることですが、私は唯一の前提とすることができますすることは、テーブルヘッダにテーブルヘッダと一致するためであるし、次のテーブル - にスキップ最初の一致の最後の表ヘッダーとの次の一致を開始するのではなく、前回の試合のエンドポイントで次の試合を開始するにはどうすればいいですか?残念ながら、ページには、マッチするために異なるものを使用するために、開始点/終了点の近くに一意の項目がありません。

<td align='center' class='table-header' colspan='18' valign='top'> 
    Header 
</td> 

...items... 

<td align='center' class='table-header' colspan='18' valign='top'> 
    Header 2 
</td> 

が、私は私の表現のスタートとしてはcolspanを使用して、次のテーブルのヘッダーまでのすべてをつかむしようとしたが、それだけで壊れる:コードは次のようになります。

ありがとうございます。

+2

は、HTMLパーサを使用して、あなたの問題のすべてが離れて行きます。 – nickb

答えて

関連する問題