Php 两个标记和条件之间的Regex preg_match_all

Php 两个标记和条件之间的Regex preg_match_all,php,regex,Php,Regex,我试图在两个标签之间获取内容,但有一个条件 这里有一个例子,我想得到所有的tr,但只有那些带有/c的 示例字符串: <tr><td> /a </td></tr> <tr><td> /b </td></tr> <tr><td> /c </td></tr> <tr><td> /d </td></tr> /a

我试图在两个标签之间获取内容,但有一个条件

这里有一个例子,我想得到所有的tr,但只有那些带有/c的

示例字符串:

<tr><td> /a </td></tr>
<tr><td> /b </td></tr>
<tr><td> /c </td></tr>
<tr><td> /d </td></tr>
/a
/b
/c
/d
利用我目前所得到的,我得到了所有的tr

preg_match_all("/<tr.*<\/tr>/", $input_lines, $output_array);
preg\u match\u all(“/

注意:使用
*?
可能会导致不必要的贪婪结果。请参见以下示例:

<td>(.*?/c.*?)<\/td>
(.*c.*


@Sam:请只链接到答案,而不是像您在这里所做的那样链接到非答案。@tchrist mind将我链接到一个元Q/a,其中列出了原因?我没有链接到OP问题的具体答案,但这是一个非常复杂的问题(在我看来)OP阅读关于使用正则表达式解析HTML的必读资源。因为这不是答案,我评论道。我链接到用户何时开始验证名称输入。我也应该这样做吗?@Sam和。使用模式匹配攻击HTML的小片段是琐碎而常见的,因为我们一直在编辑器中进行。告诉people不这样做就像告诉他们不要在HTML文件上使用vi或emacs:这完全是胡说八道。相反,这是对未知来源的完整网页进行完全符合规范的解析,这才是问题所在。公平得很@tchrist,谢谢你的链接……让我更好地理解你的推理。
<td>([^<]*/c[^<]*)<\/td>
<td>(.*?/c.*?)<\/td>