我正在尝试返回列表的计数。该列表如下:
<div id="list">
<ul>
<li class="some classes">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
我无法弄清楚如何计算li
标签。我不关心内容,只关心计数。这就是我所拥有的:
preg_match_all('!<div id="list">.*?<li.*?>.*?</li>.*?</ul>!', $content, $matches);
丑陋我知道,而且我只在count($matches[0]);
任何人都可以指出我做错了什么和/或为什么?
由于
编辑:我知道使用正则表达式解析HTML是bad,但我现在几乎没有选择。
答案 0 :(得分:4)
<div id="list">.*?<li.*?>.*?</li>.*?</ul>
^^^
我指出的部分消耗所有字符,直到</ul>
(甚至是<li>
部分)。消费后,没有更多的匹配,它在这里结束,只给出一个匹配。
答案 1 :(得分:1)
试试这个,它几乎适用于所有情况:
<?php
$t='<div id="list">
<ul>
<li class="some classes">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>';
$list_array=explode("</li>",$t);
echo "total in list = ".count($list_array);
?>