使用php计算无序列表中列表项的总数

时间:2014-01-26 20:44:09

标签: php html

我想计算一个有序列表中的项目总数,虽然这在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>';

我想要做的就是计算无序列表中有多少项。

5 个答案:

答案 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>