我有一个数据库,其中包含法庭文档系统的HTML,以便我可以轻松地在文档中搜索某些动作,摘要等。文档中的每个新条目都显示一行,然后将条目分隔为一个新的条目。
每个新条目都以标记开头。文档条目中的下一个可能是我正在寻找的。例如,如果我搜索“强制执行动作”,那么当正则表达式发现时,它会将该信息拉出(该链接直接指向法院网站上的扫描文档)。我想在我的搜索结果中显示整个文档条目,以便我可以看到“动作强制执行”并确定这是“强制访问的动作”还是“实施结算动作”。
我遇到的问题是,每个docket条目都以相同的TBODY标记开头,所以如果我使用的是像
那样的/\<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紧接在“Motion to Enforce”之前。我的想法是,如果它只匹配一个TBODY后面跟着另一个TBODY之外的任何文本的模式,那么“动作强制”文本,这将给我我想要的东西。
这一点的关键是能够在MySQL查询中获取它并获取我需要在获得结果后删除解析或匹配任何内容的步骤。
感谢您的帮助!
贾罗德
答案 0 :(得分:3)
你可以使用preg_match_all,匹配字符串中的每个模式并选择你想要的匹配