我想使用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来完成这项任务吗
答案 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
希望它有所帮助...