-3

我有一个包含法院案卷系统 HTML 的数据库,这样我就可以轻松地在案卷中搜索某些动议、简报等。案卷中的每个新条目都显示有一条线,以将条目分隔为新条目.

每个新条目都以标签开头。案卷条目中的下一个可能是我正在寻找的。例如,如果我搜索“强制执行动议”,那么当正则表达式找到该信息时,它会提取该信息(直接指向法院网站上扫描文档的链接)。我想在我的搜索结果中显示整个案卷条目,以便我可以看到“执行动议”并确定这是“执行探视的动议”还是“执行和解的动议”。

我遇到的问题是每个文档条目都以相同的 TBODY 标签开头,所以如果我使用类似的 reged

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

返回的匹配项是页面上的第一个 TBODY 条目以及介于两者之间的所有文本,直到它到达文本“要强制执行的动议”。我不想这样做,因为我只想在条目中使用“强制执行的动议”进入案卷条目的开头。感觉就像我需要找到“强制执行的动议”语言并回到代码的 TBODY 部分,但我不确定如何向后工作,甚至是否可能。

我的另一个想法是做一个 strrev() 然后匹配它并将字符串反转,但我认为可能有更好的方法来做到这一点。

我的另一个想法是找到 TBODY,但如果它在进入“进入动议”语言之前找到另一个 TBODY,它不会在返回的匹配结果中包含第一个 TBODY。

例子:

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

使用 (.*?),整个示例将是匹配的,但我只希望 TBODY 紧接在“执行动议”之前。我的想法是,如果它只匹配一个 TBODY 后跟除另一个 TBODY 以外的任何文本的模式,然后是“强制执行的动议”文本,那将给我正是我想要的。

这样做的目的是能够在 MySQL 查询中使用它,并准确获取我需要的内容,从而在我得到结果后消除解析或匹配任何内容的步骤。

谢谢你的帮助!

贾罗德

编辑:这是 6 年前的事,从那以后我就知道为什么 HTML 上的正则表达式是个坏主意。它很慢并且容易出错。我发现的最好方法是[Simple HTML DOM 1.5] 1

4

1 回答 1

3

您可以使用 preg_match_all,匹配字符串中的每个模式并选择您想要的匹配

于 2013-06-27T20:43:56.360 回答