К сожалению, ваш вопрос едва понятен в его нынешнем виде.Пожалуйста, попробуйте обновить его и быть более конкретным.Если вы хотите подсчитать все теги HTML на странице , вы можете сделать:
$HTML = <<< HTML
<html>
<head>
<title>Some Text</title>
</head>
<body>
<p>Hello World<br/>
<img src="earth.jpg" alt="picture of earth from space"/>
<p>
<p>Counting Elements is easy with DOM</p>
</body>
</html>
HTML;
Подсчет всех элементов DOME с помощью DOM:
$dom = new DOMDocument;
$dom->loadHTML($HTML);
$allElements = $dom->getElementsByTagName('*');
echo $allElements->length;
Вышеприведенное выведет8
, потому что в DOM есть восемь элементов.Если вам также нужно знать распределение элементов , вы можете сделать
$elementDistribution = array();
foreach($allElements as $element) {
if(array_key_exists($element->tagName, $elementDistribution)) {
$elementDistribution[$element->tagName] += 1;
} else {
$elementDistribution[$element->tagName] = 1;
}
}
print_r($elementDistribution);
Это вернет
Array (
[html] => 1
[head] => 1
[title] => 1
[body] => 1
[p] => 2
[br] => 1
[img] => 1
)
Обратите внимание, что getElementsByTagName возвращает DOMElements *Только 1019 *Он не учитывает закрывающие теги и не возвращает другие DOMNodes.Если вам также необходимо сосчитать закрывающие теги и другие типы узлов, рассмотрите возможность использования XMLReader .