Подсчитывать общее количество элементов списка в неупорядоченном списке, используя php

Я хочу подсчитать общее количество элементов в упорядоченном списке, хотя это будет довольно распространенный вопрос в Google, но, видимо, нет.

Я попытался использовать функцию подсчета PHP, но я не уверен, что она работает для списков, поскольку она, по-видимому, относится только к массивам 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 ответов

Если вы пытаетесь подсчитать элементы 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

Это работает, даже если элементы списка имеют атрибуты (ids, classes и т.д.) Или странные форматы. Пример:

$html = '<ul id="TheList">
<li> peas </li>
<li id="foo"> carrots </li>
<li> onions </li>
</ul>';


Вы пытались использовать javaScript?

var theList = document.getElementById("TheList").getElementsByTagName("li");
var numberOfItems = theList.length;


PHP - это серверная сторона, а HTML - презентация на стороне клиента.

Если вы создаете эти li элементы из PHP сценария, чем вы можете просто сохранить счетчик, когда вторя результаты и перекликаются с Count его везде, где вы хотите.

Я предполагаю, что вы не используете какой-либо PHP-скрипт для генерации и повторения списка, поэтому вы можете использовать JavaScript чтобы помочь вам решить этот случай.

Код JavaScript:

<p id="TheList_Count">0</p> <ul id="TheList"> <li> peas </li> <li> carrots </li> <li> onions </li> </ul>


Как указывали другие, есть более подходящие способы сделать это, но в интрах обучения, вот способ, которым вы могли бы использовать php для подсчета количества элементов списка в строке html-кода...

$liststring = "<ul id="\" thelist\""="">" . "<li> peas </li>" . "<li> carrots </li>" . "<li> onions </li>" . "</ul>";
$numitems = substr_count($liststring, "<li><code>");
echo "&lt;p&gt;$numitems&lt;/p&gt;";
echo $liststring;</code> </li>


если вы пытаетесь обработать html-код, вы можете попытаться сделать это:

function count_list($list){ $array = explode("",$list); return count($list)-1;
}

licensed under cc by-sa 3.0 with attribution.