2

我想使用 php 来计算li我的 html 代码中的每个标签,这样我就可以知道是否缺少结束标签(if the count of opening tags != the count of closing tags

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

这是我的第一个 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 来完成该任务

4

1 回答 1

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 的匿名方式是

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

有一个被称为 id eq

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

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

/<td>/gm

希望能帮助到你...

于 2013-10-11T11:14:46.497 回答