-3

私は、裁判所のドケット システムの HTML を保持するデータベースを持っているので、ドケットから特定の動議や意見書などを簡単に検索できます。ドケット内の各新しいエントリは、エントリを新しいエントリとして区切るために、その間に線が引かれます。 .

新しいエントリはそれぞれタグで始まります。ドケット エントリの次は、私が探しているものかもしれません。たとえば、「施行の動議」を検索した場合、正規表現がそれを検出すると、その情報が抽出されます (裁判所の Web サイトでスキャンされた文書への直接リンク)。検索結果にドケット エントリ全体を表示して、「強制動議」を確認し、これが「面会を強制する動議」であるか、「和解を強制する動議」であるかを判断できるようにしたいと考えています。

私が抱えている問題は、ドケットのすべてのエントリが同じ TBODY タグで始まることです。

/\<TBODY class=\"docketEntry\"\>(.*?)(motion to enforce)/i 

返される一致は、ページの最初の TBODY エントリと、その間にあるテキスト「motion to enforce」までのすべてのテキストです。エントリに「強制動議」があるドケット エントリの先頭にのみ移動したいので、これは必要ありません。「強制するモーション」言語を見つけて、コードの TBODY 部分に戻る必要があるように感じますが、逆方向に作業する方法や、それが可能かどうかさえわかりません。

私の他の考えは、 strrev() を実行してから、それを照合して文字列を元に戻すことでしたが、これを行うためのより良い方法があるかもしれないと考えました.

私の他の考えは TBODY を見つけることでしたが、「モーション トゥ エンター」言語に到達する前に別の TBODY が見つかった場合、返された一致結果に最初の TBODY が含まれません。

例:

<TBODY class="docketEntry">
some uninteresting docket entry here
</TBODY>
<TBODY class=docketEntry">
Motion to Enforce Visistation
</TBODY>

(.*?) を使用すると、この例全体が一致しますが、「Motion to Enforce」の直前の TBODY のみが必要です。私の考えでは、TBODY の後に別の TBODY 以外のテキストが続き、次に「Motion to Enforce」テキストが続くパターンにのみ一致する場合、それはまさに私が望むものを与えるだろうというものでした。

これのポイントは、MySQL クエリでこれを使用して、結果を取得した後に何かを解析または照合する手順を省略して、必要なものを正確に取得できるようにすることです。

助けてくれてありがとう!

ジャロッド

編集: これは 6 年前のことで、なぜ HTML の正規表現がそん​​なに悪い考えなのかを学びました。遅く、エラーが発生しやすいです。私が見つけた最良の方法は[Simple HTML DOM 1.5] 1

4

1 に答える 1

3

preg_match_all を使用して、文字列内のすべてのパターンに一致させ、必要な一致を選択することができます

于 2013-06-27T20:43:56.360 に答える