0

リモートの html ファイルがあり、そこからテーブルを抽出しています。現在、このテーブルから個々の行を取得するために正規表現を使用しようとしています。

このテーブルのサンプル形式は次のとおりです。

<tbody style="text-align: left;">
<tr class=" even" style="text-align: left;">
<td style="text-align: left;"><a href="http://www.sdfkhy.com/%7Epbdsfby">TEXT1 </a></td>
<td style="text-align: left;">TEXT2</td>
<td style="text-align: left;">TEXT3</td>
</tr>
<tr style="text-align: left;">
<td style="text-align: left;"><a href="http://www.JDKSF.COM/index.html">TEXT3</a><br /><span class="style3">TEXT4</span></td>
<td style="text-align: left;">TEXT5</td>
<td style="text-align: left;">TEXT6</td>
</tr>
</tbody>

私は次のことを試しました:

#<tr[^>]*>(\r\n.*)*</tr>#
#<tr[^>]*>(.*?)*</tr>#
#<tr[^>]*>(.*)*</tr>#

そして、これらのどれも機能していないようです。と タグの間のすべてを取得する必要があります。つまり、各行を個別に配列に入れる必要があります。助けてください。

編集: 要件に従って REGEX を使用する必要があるため、DOM PARSER の使用を提案しないでください。

4

1 に答える 1

1

HTML ファイルの解析に正規表現を使用しない

HTMLは厳密ではありません..(たとえば、htmlには終了タグがある場合とない場合があります)

Regex不規則な表現ではなく、正規の一貫した表現に使用されます

DOMDocument->loadHTML()を使用して HTML を解析します。

使用するよりもhtmlを解析する方が簡単だと信じてくださいregex


リスクを取る準備ができている場合

これがその正規表現です

/<tr.*?>(.*?)</tr>/

s(PCRE_DOTALL) オプションを使用

于 2012-11-01T03:43:19.660 に答える