我想计算一个有序列表中的项目总数,虽然这在Google上是一个相当常见的问题,但显然不是。
我尝试过使用PHP的count函数,但我不确定它是否适用于列表,因为它似乎只与PHP数组有关。
echo '<p>' . count($TheList, 1) . '</p>';
列表的总数应显示在我的页面下方Div内的段落中,但会引发错误。
列表如下所示:
echo '<ul id="TheList" >';
echo '<li> peas </li>';
echo '<li> carrots </li>';
echo '<li> onions </li>';
echo '</ul>';
我想要做的就是计算无序列表中有多少项。
答案 0 :(得分:4)
如果您正在尝试计算DOM元素,则应使用HTML解析器。以下是 DOMDocument
的示例$html = '<ul id="TheList">
<li> peas </li>
<li> carrots </li>
<li> onions </li>
</ul>';
$doc = new DOMDocument();
$doc->loadHTML($html);
print $doc->getElementsByTagName('li')->length;
输出:
3
即使列表项具有属性(ID,类等等)或奇怪的格式,这也有效。例如:
$html = '<ul id="TheList">
<li > peas </li>
<li id="foo"> carrots </li>
<li class="bar"> onions </li>
</ul>';
答案 1 :(得分:2)
你尝试过使用javaScript吗?
var theList = document.getElementById("TheList").getElementsByTagName("li");
var numberOfItems = theList.length;
答案 2 :(得分:1)
正如其他人所指出的那样,有更合适的方法可以做到这一点,但是在学习的兴趣方面,这里有一种方法可以使用php来计算一串html代码中列表项的数量... < / p>
$liststring = "<ul id=\"TheList\" >"
. "<li> peas </li>"
. "<li> carrots </li>"
. "<li> onions </li>"
. "</ul>";
$numitems = substr_count($liststring, "<li>");
echo "<p>$numitems</p>";
echo $liststring;
答案 3 :(得分:1)
如果您正在尝试处理HTML代码,可以尝试执行此操作:
function count_list($list){
$array = explode("</li>",$list);
return count($list)-1;
}
答案 4 :(得分:1)
PHP是服务器端,而HTML是客户端的演示文稿。
如果您从PHP脚本生成这些li
元素,那么您只需在回显结果时保存计数,并在所需的任何位置回显Count
。
我猜你没有使用某些PHP脚本来生成和回显列表,因此你可以使用JavaScript
来帮助你解决这个问题。
JavaScript代码:
<html>
<head>
<title></title>
</head>
<body>
<p id="TheList_Count">0</p>
<ul id="TheList">
<li> peas </li>
<li> carrots </li>
<li> onions </li>
</ul>
<script>
document.getElementById("TheList_Count").innerHTML = document.getElementById("TheList").children.length;
</script>
</body>
</html>