如何计算特定标签ex。 <li>标签或<p>标签</p> </li>

时间:2013-10-11 11:06:10

标签: php html regex

我想使用php来计算我的html代码中的每个li标记,以便我知道是否缺少关闭标记(if the count of opening tags != the count of closing tags

是否可以使用 php regex

这是我的第一个HTML代码:

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

那么if the count of opening tags == the count of closing tags怎么样,但表格本身有错误:

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

最后,除了这种思考如何解决问题的方式之外,还有更有效的方法使用php来完成这项任务吗

1 个答案:

答案 0 :(得分:1)

首先,我认为最好给该标签一个id。

HTML

<ul id="drinks">
    <li>Coffee</li>
    <li>Tea  //closing tag is missing
    <li>Milk</li>
    <li>Orange</li>
</ul>

php方式

<?php
    $doc = new DOMDocument();
    $xml = $str->asXML();  // $str is your html string
    $doc->loadXML($xml);
    $bar_count = $doc->getElementsByTagName("ul")->length;
    echo $bar_count;
?>

<?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;
?>

javascript方式是这样的:

function drinksCount(){
    return document.getElementById("drinks").childNodes.length;
}

jquery的anonymus方式是

function drinksCount(){
    return $("ul li").children().length;    
}

使用被叫id eq

function drinksCount(){
    return $("#drinks li").children().length;    
}

如果你想采用正则表达式方式..在不符合xhtml的情况下..尝试计算领先

/<td>/gm
希望它有所帮助...