0

残念ながらxml/xcodeで解析できない破損したhtmlページがあるため、正規表現を思いつきました。私は正規表現初心者ですが、正しい結果が得られません。

ソース

<td>FIELD:</td> <td>VALUE<td>

値を取得したいのですが、ここで行き詰まっています

$regex = '{<td[^>]*<td>(.*?)</td>}';

編集:結果として、値に到達できる配列が必要なので、値に興味があるだけです

すべてのヒントに感謝します。

乾杯遠藤

4

2 に答える 2

1

これを試して:

'{<td>.*?</td>\s+<td>(.*?)</td>}'

しかし/、HTML テキストに a がありませんでした。破損によって、終了タグのスラッシュが欠落している場合は、次のように使用できます。

'{<td>.*?</?td>\s+<td>(.*?)</?td>}' 終了タグのスラッシュはオプションになりました

于 2012-04-24T20:42:06.950 に答える
0

正規表現にはすぐにわかる問題がいくつかあります。たとえば、<td[^>]*<td>あなたが思っていることをしません。しかし、別の正規表現を提案するのではなく、最も健全なことを行うことをお勧めします。

これには正規表現を使用しないでください。

私を信じて。やらないでください。他の人がここに来て、新しい正規表現パターンを提案しますが、それらのパターンはすべて間違っています。正規表現は、クリーンな HTML/XML を解析するタスクを実行することさえできないため、勝手に破損したコードで正規表現を使用しようとすると、狂気のレシピになります。この種のもののために作られたHTML Tidyを試してください。HTML の何が問題なのかによっては、HtmlPurifierBeautiful Soupなどのパーサーでも動作する可能性があります。

少し手間がかかるように思えるかもしれませんが、長い目で見れば時間を節約できます。

于 2012-04-24T20:38:21.723 に答える