Php 如何计算特定标签的数量,例如<;李>;标记或<;p>;标签

Php 如何计算特定标签的数量,例如<;李>;标记或<;p>;标签,php,html,regex,Php,Html,Regex,我想使用php计算html代码中的每个li标记,这样我就可以知道是否缺少关闭标记(如果打开标记的计数!=关闭标记的计数) 是否可以使用php正则表达式 这是我的第一个html代码: <ul> <li>Coffee</li> <li>Tea <!-- closing tag is missing --> <li>Milk</li> <li>Orange</li&g

我想使用php计算html代码中的每个
li
标记,这样我就可以知道是否缺少关闭标记(
如果打开标记的计数!=关闭标记的计数

是否可以使用php正则表达式

这是我的第一个html代码:

<ul>
    <li>Coffee</li>
    <li>Tea  <!-- closing tag is missing -->
    <li>Milk</li>
    <li>Orange</li>
</ul>

最后,除了这种思考如何解决问题的方法之外,还有没有更有效的方法使用php来完成这项任务呢?首先,我认为最好给标签一个id

Html

jquery的匿名方式是

function drinksCount(){
    return $("ul li").children().length;    
}
用一个叫做id-eq的

function drinksCount(){
    return $("#drinks li").children().length;    
}
如果你想走正则表达式的路。。在不符合xhtml的情况下。。试着数一数领先

/<td>/gm
//gm

希望它有帮助…

正如前面多次提到的,我认为你不应该用正则表达式解析html。如果你想诊断可能无效的html,也许Tidy可以帮助你:@KaarelKont Kontson这就是我提到的原因:注意:最后,…IMHO:它不是无效的html。。这只是不一致的xhtml格式,为什么不将其解析为xml并检查验证?使用XMLReader?html是xml结构。我不是php程序员,你可以看到这个例子并对它进行测试:他要求php解决方案,我暗示他要求一个正则表达式。。我想展示其他选择…@AlexTape谢谢你给我不同的方法。我尝试了Dom方法,得到了
DOMDocument::loadHTML():意外的结束标记:实体中的li,行:…
我如何捕获并删除额外的li标记?@Dvir我不是专家…但是如果op在处理Dom时要求正则表达式解决方案,然后,必须预期会出现与domdoc相关的答案……op必须确定regex是否合适,因为有时候regex比使用domdoc更容易/更快/更好。每件事都有权重,但这并不意味着domdoc不是正确的答案。@usama,您可以通过在call前面加上@ie
@DOMDocument::loadHTML()
来抑制错误。如果错误无关紧要,请抑制它并继续
<?php
    $elem = new SimpleXMLElement($str); // $str is your html string
    foreach ($elem as $ul) {
        printf("%s has got %d children.\n", $ul['id'], $ul->count());
    }
?>
<?php
   $DOM = new DOMDocument;
   $DOM->loadHTML($str); // $str is your html string
   echo $DOM->getElementsByTagName('ul')->length;
?>
function drinksCount(){
    return document.getElementById("drinks").childNodes.length;
}
function drinksCount(){
    return $("ul li").children().length;    
}
function drinksCount(){
    return $("#drinks li").children().length;    
}
/<td>/gm