如何提取a<;tr>;PHP中的标签?

如何提取a<;tr>;PHP中的标签?,php,html,regex,html-parsing,Php,Html,Regex,Html Parsing,我对regex不熟悉。我想问一下这个html标记的正确组合是什么: <tr class="calendar_row" data-eventid="39654"> <td class="alt1 eventDate smallfont" align="center"/></td> <td class="alt1 smallfont" align="center">3:34am</td> <t

我对regex不熟悉。我想问一下这个html标记的正确组合是什么:

   <tr class="calendar_row" data-eventid="39654">
      <td class="alt1 eventDate smallfont" align="center"/></td>
      <td class="alt1 smallfont" align="center">3:34am</td>
      <td class="alt1 smallfont" align="center">CNY</td>
   </tr>

凌晨3:34
人民币
我用的是:

   $html = website html from a url
   $match = array();

   $pattern = "/(<tr.*?\data-eventid\>.*?<\/tr>)/ims";
   preg_match_all($pattern, $html, $match);
$html=来自url的网站html
$match=array();
$pattern=“/(.*?)/ims”;
preg_match_all($pattern,$html,$match);
但它不起作用:| 我只想选择tr元素的所有内容

致以最诚挚的问候。

使用DOMDocument 你不应该在这样的事情上使用正则表达式;而是从标记中创建一个元素,然后从该特定元素中选择子元素。例如,下面将为我们提供标记中每个
标记的集合html:

//我们的HTML最终会出现在这里
$innerHTML=“”;
//基于我们的HTML创建一个新的DOMDocument
$document=新文档;
$document->loadHTML($html);
//获取所有元素的节点列表
$cells=$document->getElementsByTagName(“td”);
//循环遍历每个,将其HTML添加到$innerHTML
foreach($cells作为$cell){
$innerHTML.=$document->saveHTML($cell);
}
//输出我们辉煌的HTML
echo$innerHTML;
正则表达式 如果您真的想使用
preg_match
获取
tr
标记之间的内容,则以下操作应该有效:

//我们用于捕获和之间所有内容的模式
$pattern=“/]*>(.*)/s”;
//如果找到匹配项,请将结果存储在$match中
if(preg_match($pattern,$html,$match)){
//显示捕获的值
echo$match[1];
}
其结果如下:

<td class="alt1 eventDate smallfont" align="center"></td>
<td class="alt1 smallfont" align="center">3:34am</td>
<td class="alt1 smallfont" align="center">CNY</td>

凌晨3:34
人民币

@Vainglory07我理解;但是,如果你想解析HTML,你不应该使用正则表达式,而应该使用一种更安全的方法,将其作为文档对象处理。:(我不知道..很抱歉..我只是在研究过去项目中的一个现有函数..@Vainglory07我已经更新了答案,以共享这两种方法。很高兴我们能对你有所帮助!