PHP - считать элементы li внутри ul - PullRequest
7 голосов
/ 13 сентября 2011

Я ищу способ подсчета динамических элементов li внутри ul в php (не js).

Например:

<ul>

  <li> lorem </li>

  <li> ipsum </li>

  <li> dolor </li>

  <li> sit </li>

</ul>

вернул бы мне номер 4 . (я слишком глуп, чтобы использовать правильный код здесь?)

Есть ли способ сделать это в php?

Заранее спасибо!

EDIT:

Разметка генерируется системой CMS, счет должен быть помещен перед списком, внутри файла шаблона.

Ответы [ 4 ]

11 голосов
/ 13 сентября 2011

Вы можете сделать очень простое Подсчет строк для <li> (или -li-) для этой строки, и он вернет количество элементов.


Edit:

$count = substr_count($html,'<li>'); //where $html holds your piece of HTML.
6 голосов
/ 13 сентября 2011

Предполагая, что этот HTML не выводится вами (в противном случае подсчет количества элементов должен быть тривиальным), вы можете использовать PHP DOMDocument .

$dom = new DOMDocument;

$dom->loadHTML($str);

foreach($dom->getElementsByTagName('ul') as $ul) {

   $count = $ul->getElementsByTagName('li')->length;

   var_dump($count);

}

CodePad.

Этот код будет подсчитывать количество элементов li в каждом элементе ul.Если вам не нужны отдельные элементы ul, просто используйте $dom->getElementsByTagName('li')->length.

3 голосов
/ 13 сентября 2011

Ваш ответ лежит с помощью DOMDocument .

Например:

$dom = new DOMDocument();
$dom -> loadHTML("<ul><li></li><li></li></ul>");
$li = $dom->getElementsByTagName("li");
foreach ($li as $li_c){
$i++;
}
echo $i;
0 голосов
/ 13 сентября 2011

Используйте библиотеку PHP DOM или найдите Simple DOM Parser. Содержит поиски по HTML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...