从字符串中获取最后一个<li>元素

Joa*_*dro 1 html php

我有一个包含大量HTML标记的字符串变量,我想从中获取最后一个<li>元素.我使用类似的东西:

$markup = "<body><div><li id='first'>One</li><li id='second'>Two</li><li id='third'>Three</li></div></body>";

preg_match('#<li(.*?)>(.*)</li>#ims', $markup, $matches);
$lis = "<li ".$matches[1].">".$matches[2]."</li>";
$total = explode("</li>",$lis);
$num = count($total)-2;
echo $total[$num]."</li>";
Run Code Online (Sandbox Code Playgroud)

这有效,我<li>打印出最后一个元素.但我不明白为什么我必须减去数组的最后2个索引$total.通常情况下,我只会减去自索引0开始计数以来的最后一个索引.我缺少什么?

有没有更好的方法<li>从字符串中获取最后一个元素?

Ign*_*ams 6

HTML不是常规的,因此无法使用正则表达式进行解析.使用正确的HTML解析器.